假设我有一个空的接口类IBaseInterface,它仅用于将实现类“标记”为接口本身。
有没有办法做这样的事情?
例如:
public class MyClass : T where T : IBaseInterface
{
}
答案 0 :(得分:2)
不是那样,没有。我强烈建议使用合成模式来尝试实现你正在尝试的任何东西。作为替代方案,您可能会发现DynamicProxy(或其他一些代理解决方案)正是您的目标。
答案 1 :(得分:2)
不,你不能这样做,因为编译器必须知道在声明类时该类实现了哪个接口。您可以将通用参数 转换为接口,但必须指定实际接口。
答案 2 :(得分:0)
您声明的类型甚至不是通用的。像这样:
class MyClass<T> : T where T : IBaseInterface
在某些情况下可以工作(例如,如果使用C ++模板而不是.Net泛型),但它只是无效的C#代码。
我不确定使用的“标签”是什么,但是具有属性的接口
ClassType ClassType { get; }
,其中
ClassType
enum
可以使用。