c# - 正确地将嵌套类型转换为接口(interface)

标签 c# .net

假设我有一个名为 ITranslation 的界面和两个实现它的类 NameTranslationDescriptionTranslation :

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/

相关文章:

c# - 为什么我的 View 不显示 ViewBag 的值?

c# - 如何将 Find 方法与通用 List 类一起使用以按名称查找特定实例

.net - 如何在 .net 中以编程方式设置连接字符串配置?

c# - 如何更改面板的 BorderStyle?

c# - 仅执行 db.SaveChanges() 时如何修复 "The instance of entity type XXX cannot be tracked"

javascript - ASP.NET 下拉列表在服务器button_click 中为空,ddl 已在客户端填充

c# - Windows 应用程序中 Model View Controller 的问题

c# - 通用事件处理

c# - 如何确定我的 .NET Windows Forms 程序在哪个监视器上运行?

c# - 在 WPF 中模拟按键