Вызов динамического объекта C# TryInvoke с неизвестным массивом аргументовC#

Место общения программистов C#
Ответить
Anonymous
 Вызов динамического объекта C# TryInvoke с неизвестным массивом аргументов

Сообщение Anonymous »

Мне нужно вызвать данный DynamicObject с заданным массивом аргументов. Однако я не знаю, как именно это сделать.
Что бы я хотел сделать:

Код: Выделить всё

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;
}
}
Если бы аргументы были фиксированы, это было бы легко ((динамически)dyn)(arg1, arg2, arg3), но как мне сделать это для массива предоставленных аргументов?
Я думаю, мне нужно вызвать TryInvoke с использованием отражения, но что мне предоставить в качестве аргумента InvokeBinder? Я не нашел способа его создать, нужно ли мне его реализовать самому (и что для этого нужно сделать?)?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -arguments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»