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
}
}
Fruit - пустой класс. У обоих делегатов одна и та же подпись.
Мне кажется, что ничего из этого не работает. Может быть, было бы полезно, если бы я объяснил, что я пытаюсь сделать (предоставьте некоторый контекст).
Я хочу создать класс, который имеет общий статический метод, который предоставляет тип и обратный вызов метода (как в приведенном выше примере).
Проблема, с которой я столкнулся, заключается в том, что делегат содержит параметр, и я не хочу приводить его в обратном вызове метода. Например, я хочу следующее:
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;
}
Возможно ли такое? Работали над этим несколько часов без особого успеха = /