Мне любопытно, можно ли создать метод делегата с неявно типизированными аргументами.Вот что я пытаюсь сделать.Подобные вещи не будут компилироваться для меня, но они должны дать вам представление о том, чего я пытаюсь достичь.
вот функции, которые я хочу вызывать с помощью делегатов:
class MyClass
{
ArrayList function1(int param1, int param2)
{
...do something...
}
ArrayList function2(string param3)
{
...do something...
}
}
А вот класс, который их вызывает:
class MyOtherClass
{
delegate ArrayList delFunc(params object[] args);
myOtherClass()
{
MyClass myClassInstance = new myClass();
delFunc myDelFunc1 = myClassInstance.function1;
delFunc myDelFunc2 = myClassInstance.function2;
myDelFunc1(1,2);
myDelFunc2("hello world");
}
}
Очевидно, что в этом примере вы просто вызовете предоставленные функции.Что я на самом деле пытаюсь сделать, так это создать функцию-обертку, которая позволяет вам предоставить функцию в качестве делегата с любым возможным списком аргументов.
Единственное решение, которое я могу придумать, - это сделать функции вMyClass также принимает списки параметров.Однако это очень запутало бы любого, кто напрямую вызывает эти функции.Вот что я имею в виду:
class MyClass
{
ArrayList function1(params object[] args)
{
...do something...
}
ArrayList function2(params object[] args)
{
...do something...
}
}
Теперь он компилируется, но мне нужно угадать или прочитать комментарии, чтобы выяснить, что передать в function1 и function2.Кроме того, там, где он когда-то потерпел неудачу во время компиляции, теперь он не работает во время выполнения.Все очень плохие вещи ...
Я думаю, что может быть какой-то синтаксис, который мне не хватает, чтобы делать что-то подобное
delegate ArrayList delFunc(MatchAnyArgumentSignature);
Приветствия, Роб