私はこのようなことをしたいと思います:
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.