我想做这样的事情:
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
}
Run Code Online (Sandbox Code Playgroud)
因此,每当我初始化obj时,它都会指向正确的方法.那可能吗?
我无法在自己的类上实现这些方法,因为它们是外部类.所以基本上我希望有一种gereric方式来按照我想要的方式初始化它们.我想避免这样的事情:
if (obj is TypeA)
{
ClassThis();
} else if (obj is TypeB)
{
CallThat();
}
//etc.
Run Code Online (Sandbox Code Playgroud)
用途dynamic:
public static void Initialize<T>(T obj) where T : BaseClass
{
SetDefault((dynamic)obj);
}
Run Code Online (Sandbox Code Playgroud)
它将强制您的方法重载选择发生在运行时而不是编译时.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |