gpt4 book ai didi

C#:强制继承接口(interface)的项目列表的接口(interface)

转载 作者:太空狗 更新时间:2023-10-30 01:00:46 25 4
gpt4 key购买 nike

我有以下界面:

IMyInterface
{
IList<IMyInterface> MyList { get; set; }
int X { get; set; }
int Y { get; set; }
}

我想强制实现此接口(interface)的类有一个列表“MyList”,其中包含其他也实现 IMyInterface 的项目的列表。我该怎么做?

如果我尝试以下操作,我会收到错误消息:

public class MyClass: IMyInterface
{
public int X { get; set; }
public int Y { get; set; }
public List<MyClass> MyList { get; set; }
}

最佳答案

如果您希望 MyList 的项目属于实现类型类,您必须使用泛型。您还应该使用约束来强制 T 成为实现该接口(interface)的类型。而 MyList 仍然必须是实现类中的 IList

IMyInterface<T> where T : IMyInterface<T>
{
IList<T> MyList { get; set; }
int X { get; set; }
int Y { get; set; }
}

public class MyClass: IMyInterface<MyClass>
{
public int X { get; set; }
public int Y { get; set; }
public IList<MyClass> MyList { get; set; }
}

这并不能阻止某人做类似的事情

public class AnotherClass: IMyInterface<MyClass>
{
public int X { get; set; }
public int Y { get; set; }
public IList<MyClass> MyList { get; set; }
}

但它已经尽可能接近了。

关于C#:强制继承接口(interface)的项目列表的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612981/

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