我想将属性声明为:
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/