我希望实现一个接口,它具有一个函数,该函数将返回基类的类型而不使用泛型接口。这可能吗?
class MyClass : MyInterface<MyClass> // Would rather use one below
class MyClass : MyInterface // Functions already know to use MyClass
答案 0 :(得分:3)
如果我理解你的问题,那么没有泛型的唯一选择就是使用反射来做到这一点。
答案 1 :(得分:2)
你必须做这样的事情:
interface MyInterface
{
Type GetBaseType();
}
但是在那时调用instance.GetType()
会更简单,因为这就是这种方法的实现最有可能的样子。
如果通过“type”你并不是指反射类型,而是你希望能够在编译时静态地使用接口中的类型,那么你需要使接口通用。
答案 2 :(得分:1)
无论
您将返回类型硬编码为MyClass
您将返回类型定义为MyInterface,然后在MyClass的实现中,您可以返回MyClass。调用者不知道它得到了什么,但可以使用typeof来查找。
答案 3 :(得分:1)
你是这样实现的:
interface IUserService : IService<User>
然后你的班级将是:
class UserService : IUserService