c# - 有没有办法说 IList<xxx> 既是特定类又是接口(interface)

标签 c# ilist

我想将属性声明为:

IList<BaseNode and IComplexType> ComplexTypes { get; }

列表中的所有元素都继承自BaseNode 并实现IComplexType。有什么办法吗?创建类 BaseNodeComplexType 是行不通的,因为列表中的节点都是 BaseNode 的子类。

更新:我没想到要完整解释。我有子类,例如 XmlNode。 XmlNode 继承自BaseNode。我还有从 XmlNode 继承并实现 IComplexType 的 XmlComplexNode。但是 XmlNode 不继承自 IComplexType(我不希望它继承,因为我在某些地方使用“obj is IComplexType”。很抱歉最初没有添加它。

最佳答案

不,但是你可以用泛型解决它吗?

class CustomObj<T> where T : BaseNode, IComplexType
{
   IList<T> ComplexTypes { get; }
}

有关使用的通用约束的更多详细信息,请参阅 this page .

关于c# - 有没有办法说 IList<xxx> 既是特定类又是接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525678/

相关文章:

c# - 我应该使用 ArrayList 还是 IList

c# - 如何在 linq 连接 (lambda) 上添加 where 子句?

c# - 使用 block 从内部返回一次性对象

c# - 使用字符串变量访问其他脚本中的公共(public)变量

c# - 如何从 VSPackage 获取当前运行的 Visual Studio 安装路径

c# - 为什么数组支持IList?

c# - 在 C# 中对 IList 进行排序

.net - 用于 .NET 的无锁和线程安全 IList<T>

c# - 使用 IEnumerable 与 ICollection 与 IList 的自定义集合

c# - 在测试期间覆盖 DateTime.Now 的好方法是什么?