6
は考える:派生クラスを持つアクション<in T>をアクションパラメータとして渡す方法はありますか?
class BaseClass {}
class DerivedClass : BaseClass {}
を私はBaseClassのパラメータを指定してアクションを受け入れることができる機能を書きたいです。この関数は、指定された型のオブジェクトを作成し、それをActionに渡します。
void MyFunction(Type type, Action<BaseClass> DoAction)
{
BaseClass obj = (BaseClass)Activator.CreateInstance(type);
DoAction(obj);
}
私は、そのパラメータDerivedClassあるAnotherFunctionに渡したい:
void AnotherFunction(DerivedClass x)
{
}
私はMyFunctionを呼び出す必要がありますどのように?以下が原因AnotherFunction引数に無効です:
MyFunction(typeof(DerivedClass), AnotherFunction);
+1あなたは私の編集に勝つ。 –
私はMyFunction(AnotherFunction)は明示的にジェネリック引数の型を指定せずにコンパイルされないと思います。 – jure
@ jureあなたは正しいです、それはタイプを推論することはできません。 – Servy