C# 模板类型约束和空接口

C# 模板类型约束和空接口,c#,generics,interface,C#,Generics,Interface,我有一个通用类: public class Temp<T, U> { } 公共类临时 { } 我想在T,U上应用类型约束。问题是:我想用作参数的类型(实际上,接口IFoo1,IFoo2,IFoo3,IFoo4)没有共同点。我可以创建一些基本接口IFoo并应用一个约束: public class Temp<T, U> where T : IFoo { } public class Temp,其中T:IFoo { } 但是有人说,有一个空的接口是不好的。对于如何以

我有一个通用类:

public class Temp<T, U>
{

}
公共类临时
{
}
我想在T,U上应用类型约束。问题是:我想用作参数的类型(实际上,接口IFoo1,IFoo2,IFoo3,IFoo4)没有共同点。我可以创建一些基本接口IFoo并应用一个约束:

public class Temp<T, U> where T : IFoo
{

}
public class Temp,其中T:IFoo
{
}

但是有人说,有一个空的接口是不好的。对于如何以适当的方式进行约束,您有什么建议吗?

唯一的方法是声明两个类:

public class Temp<T, U> where T : IFoo1
 {

 }

public class Temp<T, U> where T : IFoo2
 {

 }
public class Temp,其中T:IFoo1
{
}
公共类温度,其中T:IFoo2
{
}

但我认为使用基本接口会更好(这并不坏,我以前从未听说过。空的“标记接口”并不少见…

为什么不能对每种类型进行两个约束?如果这两个接口没有任何共同点,那么将某些内容约束到这两个接口上又怎么可能合适呢?要正确回答这个问题,需要更多(而不是抽象)的信息,因为我觉得你在这个问题上完全错了。同意,在.Net中也使用了空接口,比如IRequiresessionState,所以使用它们没有什么不好的地方