Можно ли добавить общий делегат Action к коллекции List? Мне нужна какая-то простая система обмена сообщениями для приложения Silverlight.
UPDATE Следующее - это то, что я действительно "хочу"
class SomeClass<T>
{
public T Data { get; set; }
// and more ....
}
class App
{
List<Action<SomeClass<T>>> _actions = new List<Action<SomeClass<T>>>();
void Add<T>( Action<SomeClass<T>> foo )
{
_actions.Add( foo );
}
}
Компилятор:
The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
начальный код отключен класс SomeClassBase {}
class SomeClass<T> : SomeClassBase
{
public T Data { get; set; }
// and more ....
}
class App
{
List<Action<SomeClassBase>> _actions = new List<Action<SomeClassBase>>();
void Add<T>( Action<SomeClass<T>> foo )
where T : SomeClassBase
{
_actions.Add( foo );
}
}
Компилятор жалуется - для строки _actions.Add();
Argument 1: cannot convert from 'System.Action<test.SomeClass<T>>' to 'System.Action<test.SomeClassBase>'
The best overloaded method match for 'System.Collections.Generic.List<System.Action<test.SomeClassBase>>.Add(System.Action<test.SomeClassBase>)' has some invalid arguments
Со стороны приложения нет необходимости в классе SomeClassBase, но представляется невозможным определить список элементов Action<SomeClass<T>>
, и подход с базовым классом работает при использовании класса в списке вместо Action
Спасибо, Jochen