✅ Callable Class
using System.Dynamic;
Run run = new Run();
run["Hello World"]();
Console.WriteLine(run[Run.Expression.SUM, 1, 2, 4, 2, 4]());
dynamic run2 = new Run();
run2();
class Run : DynamicObject
{
public enum Expression
{
SUM,
AVERAGE,
}
public override bool TryInvoke(InvokeBinder binder, object?[]? args, out object? result)
{
Console.WriteLine("Invoked");
result = null;
return true;
}
public Action this[string message] => () => Console.WriteLine(message);
public Func<double> this[Expression expression, params int[] _] => () =>
{
if (expression == Expression.SUM)
return _.Sum();
else
return _.Average();
};
}using System.Dynamic;
Run run = new Run();
run["Hello World"]();
Console.WriteLine(run[Run.Expression.SUM, 1, 2, 4, 2, 4]());
dynamic run2 = new Run();
run2();
class Run : DynamicObject
{
public enum Expression
{
SUM,
AVERAGE,
}
public override bool TryInvoke(InvokeBinder binder, object?[]? args, out object? result)
{
Console.WriteLine("Invoked");
result = null;
return true;
}
public Action this[string message] => () => Console.WriteLine(message);
public Func<double> this[Expression expression, params int[] _] => () =>
{
if (expression == Expression.SUM)
return _.Sum();
else
return _.Average();
};
}How to use Callable Class in C#?
like
var d = Class1();
d();var d = Class1();
d();like in python __call__ or dart?
