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

Can method inheritated from interface return another type that in interface?

假设我有这样的代码:

interface IObject
{
     IObject GetSomeObject();
}

public class ObjectClass : IObject
{
     IObject GetSomeObject()
     {
     // method implementation here
     }
}

有没有什么办法,让我把classObjectClassGetSomeObject()方法改成returnObjectClass,没有IObject

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

ObjectClass object1= someObject1.GetSomeObject() as ObjectClass;

但是我想达到的是:

public class ObjectClass : IObject
{
     ObjectClass GetSomeObject()
     {
     // method implementation here
     }
}     

这样可以吗?

您可以使用泛型:

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

public class ObjectClass : IObject<ObjectClass> { ... }

您可以使用泛型:

interface IObjectReturnable<T>
{
    T GetSomeObject();
}

public class ObjectClassRet : IObjectReturnable<ObjectClassRet>
{
    public ObjectClassRet GetSomeObject()
    {
        // method implementation here
        return new ObjectClassRet();
    }
}

您可以使用 explicit interface implementation:

public interface IObject
{
     IObject GetSomeObject();
}

public class ObjectClass : IObject
{
    public ObjectClass GetSomeObject()
    {
        return this;
    }

    IObject IObject.GetSomeObject()
    {
        return this;
    }
}

这样,访问 ObjectClass 的消费者可以调用 ObjectClass GetSomeObject(),而通过 IObject 访问此 class 实例的消费者只能调用 IObject GetSomeObject().