单方面的方法和约束

Jer*_*oen 5 c# generics

我跑到了以下地方:

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)

我很想能够做到这一点.但我认为这是不可能的.编译器忽略约束.为什么?(我知道这是设计的).

我认为我的两个选择是:

  1. 制作2个不同的功能.
  2. 制作2个不同的配置类.

对?

Mat*_*ell 4

如果您的意思是在同一个类中,那么您是正确的(我认为编译器不会检查以确保 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)