c# - 从接口(interface)继承的方法可以返回接口(interface)中的另一种类型吗?

标签 c# polymorphism

假设我有这样的代码:

interface IObject
{
     IObject GetSomeObject();
}

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

有什么方法可以使 ObjectClass 类的 GetSomeObject() 方法返回 ObjectClass,而不是 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> { ... }

关于c# - 从接口(interface)继承的方法可以返回接口(interface)中的另一种类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503189/

相关文章:

c# - C# 中的列表转换

c# - 一次访问数据库就可以在 LINQ 中更新?

C# - 为扩展方法提供类型信息

c# - 在 C# 中销毁变量或数组

c++ - 使用编译时已知的类型避免模板冗长和动态多态性

ruby-on-rails - Rails 4 多态关联和关注点

c# - Alexa TopSites - 连续签名失败 - C# 实现

c# - 关于 IoC/DI VS CBSE 的信息

java - Jackson 可以使用它没有编写的 boolean JSON 属性反序列化为具体子类吗?

c++ - 双重继承和多态性。如何从一个基类中分离出两个成员?