Что бы я хотел сделать:
Код: Выделить всё
using System.Dynamic;
using System.Reflection;
InvokeDynamicObject(new A(), ((object[])["asd", 1, null]));
object? InvokeDynamicObject(DynamicObject dyn, object?[] args)
{
dyn.TryInvoke(/* what? */, args, out object? res);
return res;
}
class A : DynamicObject
{
public override bool TryInvoke(InvokeBinder binder, object?[]? args, out object? result)
{
Console.WriteLine($"Called with args {String.Join(", ", (args ?? []).Select(a => a is null ? "null" : a.GetType().Name))}");
result = null;
return true;
}
}
Я думаю, мне нужно вызвать TryInvoke с использованием отражения, но что мне предоставить в качестве аргумента InvokeBinder? Я не нашел способа его создать, нужно ли мне его реализовать самому (и что для этого нужно сделать?)?
Подробнее здесь: https://stackoverflow.com/questions/791 ... -arguments
Мобильная версия