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;
}
Возможно ли такое?Работали над этим несколько часов без особой удачи = /