我跑到了以下地方:
public void AddConfig<T>(Config c) where T : BaseTypeA
{
// do stuff
}
public void AddConfig<T>(Config c) where T : BaseTypeB
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我很想能够做到这一点.但我认为这是不可能的.编译器忽略约束.为什么?(我知道这是设计的).
我认为我的两个选择是:
对?
如果您的意思是在同一个类中,那么您是正确的(我认为编译器不会检查以确保 BaseTypeA 和 BaseTypeB 不能相互转换,这是您需要检查以确保它们是唯一方法,即就像where T : BaseTypeA && T !: BaseTypeB如果你明白我的意思)。
话虽如此,你为什么不做这样的事情:
interface IConfigurable
{
void AddConfig(Config c)
}
public class BaseTypeA : IConfigurable
public class BaseTypeB : IConfigurable
Run Code Online (Sandbox Code Playgroud)