【问题标题】:C# Accept object with Interface1 and Interface2C# 接受具有 Interface1 和 Interface2 的对象
【发布时间】:2009-04-21 14:50:17
【问题描述】:

复制:

Is it possible to make a parameter implement two interfaces?


正在寻找一种方法来做到这一点:

public interface INumber1 {}
public interface INumber2 {}
public class TestObject : INumber1, INumber2 {}

public static class TestClass
{
    public static void TestMethod(INumber1&INumber2 testobject)
    {
        ...
    }
}

调用测试方法:

TestClass.TestMethod(new TestObject());

问题是我需要一个参数来包含来自 INumber1 和 INumber2 的方法。 提示?

【问题讨论】:

标签: c# interface


【解决方案1】:

试试这个:

public static void TestMethod<T>(T testObject) Where T:INumber,INumber2
{

}

【讨论】:

    【解决方案2】:

    创建一个通用接口。

    【讨论】:

      【解决方案3】:

      您可以使用通用方法:

      public static void TestMethod<T>(T testObject)
          where T : INumber1, INumber2
      {
      }
      

      或者,您可以创建一个同时扩展INumber1INumber2 的接口:

      public interface INumber1And2 {}
      
      public class TestObject : INumber1And2
      

      我个人更喜欢泛型解决方案,如果你能侥幸逃脱的话,但有时泛型会使事情变得非常复杂。另一方面,您设法使这两个接口保持良好和隔离。

      【讨论】:

        【解决方案4】:

        是否可以让 Inumber2 从 Inumber1 继承?如果没有,制作泛型方法是否可行?

        public static void TestMethod<T>(T testObject);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多