gpt4 book ai didi

c# - 传递实现相同接口(interface)的不同内容

转载 作者:行者123 更新时间:2023-11-30 13:51:56 25 4
gpt4 key购买 nike

我有多个 Linq2Sql 类,例如“文章”“NewsItem”“产品”。

它们都有一个标题,它们都有一个唯一的 ID,它们都有一个摘要。

因此,我创建了一个名为 IContent 的接口(interface)

public interface IContent {
int Id { get; set; }
String Title { get; set; }
String Summary { get; set; }
String HyperLink { get; set; }
}

在我的代码中,我试图使传递 List<T> 成为可能。实现 IContent然后使用我在项目的每个部分类中实现的那些公共(public)属性。

所以,只是为了澄清

Article是一个 Linq 实体。我创建了一个部分类并实现了 IContent这是 Article.cs 的片段:

   #region IContent Members

public int Id {
get {
return this.ArticleID;
}
set {
this.ArticleID = value;
}
}

非常简单。在我的代码中,我正在尝试这样做,但我不知道哪里出错了:

List<IContent> items;

MyDataContext cms = new MyDataContext();

items = cms.GetArticles();
// ERROR: Can not implicitly convert List<Article> to List<IContent>

如果我的Article类(class)工具IContent为什么我不能传递文章?我不知道要传入的对象是什么。

我知道我可以通过继承基类来做到这一点,但使用 LinqToSQL 不会使用常规对象。

我确定这是我遗漏的简单内容。

最佳答案

这是因为 List 类和接口(interface)不是协变的。如果您使用的是 .NET 4.0 和 C# 4.0,您实际上可以在 IEnumerable<> 上使用协方差。接口(interface),这对于 LINQ 应用程序应该没问题。

There's a good FAQ covering those topics.

关于c# - 传递实现相同接口(interface)的不同内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com