Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中的两个接口之间创建交集?_C#_.net_Oop - Fatal编程技术网

如何在C#中的两个接口之间创建交集?

如何在C#中的两个接口之间创建交集?,c#,.net,oop,C#,.net,Oop,我正在尝试创建一个字典,它的价值是两个接口的组合 我试图做的事情如下所示: public interface IA { }; public interface IB { }; public class Test { public Dictionary<int, <IA,IB>> dict; }; 还有其他方法吗?最接近您尝试执行的构造是带有类型约束的泛型: public interface IA { }; public interface IB { }; p

我正在尝试创建一个字典,它的价值是两个接口的组合

我试图做的事情如下所示:

public interface IA { };
public interface IB { };

public class Test {
    public Dictionary<int, <IA,IB>> dict;
};

还有其他方法吗?

最接近您尝试执行的构造是带有类型约束的泛型:

public interface IA { };
public interface IB { };

public class Test<T> where T : IA, IB
{
    public Dictionary<int, T> dict;
};
公共接口IA{};
公共接口IB{};
公共类测试,其中T:IA,IB
{
公共词典;
};

这将强制代码用户提供实现
IA
IB
的类型,但需要使代码具有通用性,这对于您的实际场景可能是可行的,也可能是不可行的。

我认为
IC
方法不能100%工作,因为类可以满足您实现
IA
IB
的实际需求,而不必实现
IC
。IC是IA和IB的结合,而不是交叉点
public interface IA { };
public interface IB { };

public class Test<T> where T : IA, IB
{
    public Dictionary<int, T> dict;
};