是否可以为不共享基类/接口的多个类定义泛型约束?
对于前者
class A
{
}
class B
{
}
class C
{
void Test<T>(T someObj)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想将A类或B类传递给Test方法,没有别的.
我知道我可以使用A或B的基类/接口放置where语句,但是在我的情况下我不能为相关类指定基接口/类.
不,这样做没有意义.它不再是通用的.如果类A和B共享属性,方法等,它们应该共享相同的接口或基类.如果没有,它们不是"相同的",不能这样对待.
猜猜如果你在两个类中的一个中更改了方法签名会发生什么.突然间,这种方法不再"共享"了.编译器不会尝试确定哪些方法和属性可以被视为共享,而是不支持您请求的功能.
一个选项是使用两个方法(每种类型的一个重载)引入重复代码,当然这很糟糕.最好使用一个interface,或者如果它真的不在你手中dynamic,尽管我尽量减少使用它.