T StartValue { get; set; }
public int DoCalc(object arg1, T arg2)
if (arg1 == null || Convert.ToInt32(StartValue) == 0) throw new ArgumentException();
return Convert.ToInt32(arg1) + Convert.ToInt32(arg2) / Convert.ToInt32(StartValue);
throw new ArgumentException();
public T higherOrderCalculation(Func<T, T, T> Func, T one, T two)
public void LogToConsole(string message)
Console.WriteLine(message);
public async void LogtoFile(string message)
await File.AppendAllTextAsync($"logfile{DateTime.Now.ToString("yyyy-mm-dd")}.log", message);
public static void Main()
var foo = new Foo<double>(1.5d);
foo.LogToConsole("Hello world");
foo.LogtoFile("Hello world");
var result1 = foo.DoCalc(1, 2);
var result2 = foo.higherOrderCalculation((x, y) => x + y, 3, 4);