我想做这样的事情:
public static void Initialize<T>(T obj) where T : BaseClass
{
SetDefault(obj);
}
private static void SetDefault(AInheritedFromBaseClass thing)
{
// do something
}
private static void SetDefault(BInheritedFromBaseClass thing)
{
// do something
}
因此,每次我初始化 obj 时,它都会指向正确的方法。这可能吗?
我不能在它自己的类上实现那些方法,因为它们是外部类。所以基本上我想有一种通用的方式来按照我想要的方式初始化它们。我想避免这样的事情:
if (obj is TypeA)
{
ClassThis();
} else if (obj is TypeB)
{
CallThat();
}
//etc.
最佳答案
使用动态
:
public static void Initialize<T>(T obj) where T : BaseClass
{
SetDefault((dynamic)obj);
}
它将强制您的方法重载选择发生在运行时而不是编译时。
关于c# - 方法类型重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632024/