声明实现通用接口的C#类

时间:2011-07-09 20:36:26

标签: c# class generics interface implements

假设我有一个空的接口类IBaseInterface,它仅用于将实现类“标记”为接口本身。

有没有办法做这样的事情?

例如:

public class MyClass : T where T : IBaseInterface
{
}

3 个答案:

答案 0 :(得分:2)

不是那样,没有。我强烈建议使用合成模式来尝试实现你正在尝试的任何东西。作为替代方案,您可能会发现DynamicProxy(或其他一些代理解决方案)正是您的目标。

答案 1 :(得分:2)

不,你不能这样做,因为编译器必须知道在声明类时该类实现了哪个接口。您可以将通用参数 转换为接口,但必须指定实际接口。

答案 2 :(得分:0)

您声明的类型甚至不是通用的。像这样:

class MyClass<T> : T where T : IBaseInterface

在某些情况下可以工作(例如,如果使用C ++模板而不是.Net泛型),但它只是无效的C#代码。

我不确定使用的“标签”是什么,但是具有属性的接口

ClassType ClassType { get; }

,其中 ClassType enum可以使用。