我在C#中使用继承和模板时遇到了一些问题。 这是我的问题:
我有一个使用泛型的类/接口A,以便它可以处理任何数据类型。
例如:ICollection<T>
。
我有一个简单的类/接口I.
例如:object
。
我有一个扩展I的类/接口B.
例如:string
。
我不能写这样的东西:
static void MyFunction(A<B> bar)
{
A<I> foo = bar; // Error here
foo.DoSomething();
}
用我的(愚蠢的)例子:
static string StringListToString(ICollection<string> toShow)
{
return ObjectListToString(toShow); // Error here
}
static string ObjectListToString(ICollection<object> toShow)
{
string result = string.Empty;
foreach(object obj in toShow)
{
result += obj.ToString() + '\n';
}
return result;
}
给定错误(编译时):无法将“A<B>
”转换为“A<T>
”。 (ICollection<string>
加入ICollection<object>
)
我真的不想创建另一个列表:/
这是一个C#问题,还是应该改变我的代码方式?
无论如何,感谢阅读,
Sylafrs。
总结:
ICollection<string> strCollection = new List<string>(); // possible
ICollection<object> objCollection = new List<string>(); // impossible
编辑:不是模板:通用