class Test
{
public delegate void FruitDelegate(Fruit f);
public void Notify<T>(Action<T> del) where T : Fruit
{
FruitDelegate f = del; // Cannot implicitly convert type 'Action<T>' to 'FruitDelegate
}
}
水果是空的類。這兩位代表都有相同的簽名。如何將動作轉換爲相同簽名的已定義委託?
我似乎無法得到任何這種工作。如果我解釋我正在嘗試做的事情(提供一些上下文),可能會有所幫助。
我想創建一個具有提供類型和方法回調(如上例)的泛型靜態方法的類。
我遇到的問題是委託包含一個參數,我不想在方法回調中強制轉換它。例如,我想這樣的:
public void SomeMethod()
{
Test.Notify<Apple>(AppleHandler);
}
private void AppleHandler(Apple apple)
{
}
取而代之的是:
public void SomeMethod()
{
Test.Notify<Apple>(AppleHandler);
}
private void AppleHandler(Fruit fruit)
{
Apple apple = (Apple)fruit;
}
是這種事情可能嗎?一直在努力了幾個小時沒有太多的運氣=/
哇!魔法!完美的作品。我必須盯着這一段時間。將此移至頂端。 –