C#C
C#16mo ago
30 replies
RV

✅ 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();
    };
}


How to use Callable Class in C#?
like
var d = Class1();
d();


like in python __call__ or dart?
Was this page helpful?