接口函数返回实现类的类型

时间:2009-10-12 00:29:19

标签: c# interface generics

我希望实现一个接口,它具有一个函数,该函数将返回基类的类型而不使用泛型接口。这可能吗?

class MyClass : MyInterface<MyClass> // Would rather use one below

class MyClass : MyInterface   // Functions already know to use MyClass

4 个答案:

答案 0 :(得分:3)

如果我理解你的问题,那么没有泛型的唯一选择就是使用反射来做到这一点。

答案 1 :(得分:2)

你必须做这样的事情:

interface MyInterface
{
    Type GetBaseType();
}

但是在那时调用instance.GetType()会更简单,因为这就是这种方法的实现最有可能的样子。

如果通过“type”你并不是指反射类型,而是你希望能够在编译时静态地使用接口中的类型,那么你需要使接口通用。

答案 2 :(得分:1)

无论

  1. 您将返回类型硬编码为MyClass

  2. 您将返回类型定义为MyInterface,然后在MyClass的实现中,您可以返回MyClass。调用者不知道它得到了什么,但可以使用typeof来查找。

答案 3 :(得分:1)

你是这样实现的:

interface IUserService : IService<User>

然后你的班级将是:

class UserService : IUserService