C#继承和模板

时间:2014-05-21 10:37:57

标签: c# templates inheritance interface abstract

我在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

编辑:不是模板:通用

0 个答案:

没有答案