以下不能在線編譯fm.AddFoo(new StringFoo());與錯誤消息:無法轉換通用對象
參數1:無法從「ClassLibrary2.StringFoo」到「ClassLibrary2.IFoo」轉換
這似乎合乎邏輯的,因爲我從字符串對象繼承。
public interface IFoo<T>
{
void Handle(T value);
}
public class StringFoo : IFoo<string>
{
public void Handle(string value)
{ }
}
public class ObjectFoo : IFoo<object>
{
public void Handle(object value)
{ }
}
public class FooManager
{
private readonly List<IFoo<object>> _foos;
public FooManager()
{
_foos = new List<IFoo<object>>();
}
public void AddFoo(IFoo<object> foo)
{
_foos.Add(foo);
}
}
public class Bad
{
public Bad()
{
var fm = new FooManager();
fm.AddFoo(new StringFoo()); \\ This does not compile
}
}
感謝
可能重複的[我可以創建一個泛型類型的字典?](http://stackoverflow.com/questions/654752/can-i-create-a-dictionary-of-generic-types) – CodeCaster