从接口继承的方法可以返回接口中的另一种类型吗?

Ric*_*o W 2 c# polymorphism

可以说我有这样的代码:

interface IObject
{
     IObject GetSomeObject();
}

public class ObjectClass : IObject
{
     IObject GetSomeObject()
     {
     // method implementation here
     }
}
Run Code Online (Sandbox Code Playgroud)

有什么办法,我让GetSomeObject()班级的方法ObjectClass回归ObjectClass,不是IObject吗?

我知道我可以像这样使用它:

ObjectClass object1= someObject1.GetSomeObject() as ObjectClass;
Run Code Online (Sandbox Code Playgroud)

但我想要达到的目标是:

public class ObjectClass : IObject
{
     ObjectClass GetSomeObject()
     {
     // method implementation here
     }
}     
Run Code Online (Sandbox Code Playgroud)

这样可能吗?

Lee*_*Lee 6

你可以使用泛型:

interface IObject<T> where T : IObject<T>
{
    T GetSomeObject();
}

public class ObjectClass : IObject<ObjectClass> { ... }
Run Code Online (Sandbox Code Playgroud)