假设我有一个名为 ITranslation
的界面和两个实现它的类 NameTranslation
和DescriptionTranslation
:
interface ITranslation {
string text { get; set; }
}
class NameTranslation: ITranslation {
public string text { get; set; }
}
class DescriptionTranslation: ITranslation {
public string text { get; set; }
}
然后我希望能够使用它们调用一个方法。
public void DoStuff(ITranslation) { ... };
以上效果很好!
假设我重新实现了我的 DoStuff
获取我的接口(interface)的通用集合的方法:
public void TryIt()
{
ICollection<ITranslation> myList = new List<ITranslation>();
DoStuff(myList);
}
public void DoStuff(ICollection<ITranslation> Param) { }
效果也很好!
但是当我切换到
ICollection<NameTranslation> myList = new List<NameTranslation>();
C# 说它无法转换它。
这是为什么呢?我怎样才能实现它?
我想从ICollection<NameTranslation>
开始至ICollection<ITranslation>
最佳答案
我相信如果您将 DoStuff 方法更改为:
public void DoStuff<T>(ICollection<T> Param) where T : ITranslation { }
将解决您的问题
关于c# - 正确地将嵌套类型转换为接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51526796/