显然可以使用class
public class MyClass
{
public IEnumerable<MyClass> Children { get; set; }
}
但是我不确定interface
是否可以使用,因为我不知道在接口内引用“相同类型”的方法。
示例:
public interface IMyClass
{
public IEnumerable<IMyClass> Children { get; set; }
}
我认为键入参数可能会使这种情况发生,但是还无法想象出一种方法。
答案 0 :(得分:3)
如果我理解正确,您想返回实现接口的(IEnumerable)类,而不是接口本身?
如果是这样,那么您可以这样做:
public interface IMyClass<T>
where T : IMyClass<T>
{
IEnumerable<T> Children { get; set; }
}
public class Foo : IMyClass<Foo> {
public IEnumerable<Foo> Children {
get => throw new NotImplementedException();
set => throw new NotImplementedException();
}
}