如何在C#中对变量定义中的接口求和?

如何在C#中对变量定义中的接口求和?,c#,.net,inheritance,types,interface,C#,.net,Inheritance,Types,Interface,假设我们有两个接口:IOne和ITwo,我想定义一个函数,它接受同时实现这两个接口的任何类型的参数。怎么做?您可以这样做: interface IOne {void Hello();} interface ITwo {void World();} static void Foo<T>(T arg) where T : IOne, ITwo { arg.Hello(); arg.World(); } 接口IOne{void Hello();} 接口ITwo{void

假设我们有两个接口:
IOne
ITwo
,我想定义一个函数,它接受同时实现这两个接口的任何类型的参数。怎么做?

您可以这样做:

interface IOne {void Hello();}
interface ITwo {void World();}

static void Foo<T>(T arg) where T : IOne, ITwo {
    arg.Hello();
    arg.World();
}
接口IOne{void Hello();}
接口ITwo{void World();}
静态无效Foo(T arg),其中T:IOne,ITwo{
arg.Hello();
arg.World();
}

您可以这样做:

interface IOne {void Hello();}
interface ITwo {void World();}

static void Foo<T>(T arg) where T : IOne, ITwo {
    arg.Hello();
    arg.World();
}
接口IOne{void Hello();}
接口ITwo{void World();}
静态无效Foo(T arg),其中T:IOne,ITwo{
arg.Hello();
arg.World();
}

您可以添加一个接口,该接口由
ITwo
IOne
继承

public void SomeFunction(INumber argument)
{         
} 
public interface INumber
{
} 
public interface ITwo : INumber
{
}
public interface IOne : INumber
{
}
或使用泛型:

public void SomeFunction<T>(T argument) where T : IOne, ITwo
{   
}
public void SomeFunction(T参数),其中T:IOne,ITwo
{   
}

您可以添加一个接口,该接口由
ITwo
IOne
继承

public void SomeFunction(INumber argument)
{         
} 
public interface INumber
{
} 
public interface ITwo : INumber
{
}
public interface IOne : INumber
{
}
或使用泛型:

public void SomeFunction<T>(T argument) where T : IOne, ITwo
{   
}
public void SomeFunction(T参数),其中T:IOne,ITwo
{   
}

您的第一个解决方案不能保证
参数
同时实现两个接口。事实上,它可能无法实现其中任何一个!第二个解决方案很好,但是:-)第一个解决方案不能保证
参数
同时实现两个接口。事实上,它可能无法实现其中任何一个!不过,您的第二个解决方案很好:-)