C#使用Interface1和Interface2接受对象

时间:2009-04-21 14:50:17

标签: c# interface

重复:

  

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)
    {
        ...
    }
}

调用TestMethod:

TestClass.TestMethod(new TestObject());

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

4 个答案:

答案 0 :(得分:5)

试试这个:

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

}

答案 1 :(得分:0)

创建一个通用界面。

答案 2 :(得分:0)

您可以使用通用方法:

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

或者,您可以创建一个扩展INumber1INumber2

的界面
public interface INumber1And2 {}

public class TestObject : INumber1And2

我个人更喜欢通用的解决方案,如果你可以逃脱它,但有时泛型可以使事情复杂化。另一方面,您设法保持两个接口良好且隔离。

答案 3 :(得分:-1)

是否有可能让Inumber2继承自Inumber1?如果没有,是否会使通用方法有效?

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