所以在這裏我想通過一個方法與隨機簽名的Foo方法的參數。但沒有任何運氣。
問題是我可以通過任何操作。但是在一個方法上。
任何幫助?C#:傳遞的方法具有可變參數的另一種方法
class Bar
{
void M1(int a) { }
void M2(string a, int b) { }
Action<string, int, bool> A1 = (s, i, b) => {};
Action<int, float> A2 = (i, f) => {};
void Foo(Delegate f) {}
void Test()
{
Foo(A1);
Foo(A2);
// Foo(M1); // nope
// Foo(M2); // no way
}
}
PS。我試圖在Unity3d的Mono下運行。
這是不特定於unity3d或單聲道的,它只是語言的一部分。 「M1」和「M2」是「方法組」而非代表。一個方法組可以轉換爲任何兼容的委託類型,並且編譯器拒絕從空中選擇一個(比如'Action'或'Func'類型)。 –
是的,我知道。我剛剛提到過,以防有人根據C#3.0+的獨特功能提出解決方案。 – dotsquid