【问题标题】:Type of object question对象问题的类型
【发布时间】:2011-02-02 00:12:22
【问题描述】:

在 C# 中,我有一个接口,并且有一些类会实现这个接口。 我有一个通用的实用程序类,我想限制它,以便只能使用实现该接口的类型来声明实用程序类,如下所示,我该怎么做??

public interface IMyInterface 
{}

public class A : IMyInterface {} // can pass into UtilityClass
public interface B : IMyInterface{}
public class C : B {} // can pass into UtilityClass
public class D {} // can Not pass into UtilityClass

public class UtilityClass<T is IMyInterface>
{
// some utility function
}

谢谢。

【问题讨论】:

    标签: c# interface types


    【解决方案1】:

    您正在寻找通用约束。这些在 C# 中通过在类名后面使用 where 关键字来表示。

    public class UtilityClass<T> where T:IMyInterface
    {
    
    }
    

    【讨论】:

      【解决方案2】:
      public class UtilityClass<T> where T: IMyInterface
      {
      // some utility function
      }
      

      它们被称为约束,您可以在此处阅读更多内容http://msdn.microsoft.com/en-us/library/d5x73970.aspx

      【讨论】:

        【解决方案3】:

        使用 where 子句:

        public interface IMyInterface 
        {}
        
        
        public class UtilityClass<T> where T : IMyInterface
        {
        // some utility function
        }
        

        【讨论】:

          【解决方案4】:

          您可以像这样向泛型类添加限制:

          public class UtilityClass<T> where T : IMyInterface
          {
          // some utility function
          }
          

          【讨论】:

            猜你喜欢
            • 2011-05-14
            • 1970-01-01
            • 2013-09-07
            • 2011-11-18
            • 1970-01-01
            • 2022-12-11
            • 1970-01-01
            • 1970-01-01
            • 2019-12-26
            相关资源
            最近更新 更多