【问题标题】:Declare C# Class That Implements a Generic Interface声明实现通用接口的 C# 类
【发布时间】:2011-07-09 20:36:25
【问题描述】:

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

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

例如:

public class MyClass : T where T : IBaseInterface
{
}

【问题讨论】:

  • 泛型类型如何工作?
  • 在 .NET 中,如果您只想为特定行为标记/标记类,最好使用属性而不是空接口。

标签: c# class generics interface implements


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      class MyClass<T> : T where T : IBaseInterface
      

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

      我不确定“标签”是做什么用的,但它是一个带有属性的接口

      ClassType ClassType { get; }
      

      在哪里 ClassTypeenum 可以工作。

      【讨论】:

        猜你喜欢
        • 2020-12-03
        • 2019-03-26
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        相关资源
        最近更新 更多