2010-11-29 3 views
4

クリーンな方法が必要です。辞書<T,Delegate>、種類の異なるデリゲート:より洗練された非文字列のメソッド名?

... Constructor() 
{ 
     parseDictionary = new Dictionary<typeOfStream, Delegate>() 
      { 
       {typeOfStream.SOME_ENUM_VAL, Delegate.CreateDelegate(typeof(ParseDelegate<string>), this, "MyMethod")}, 
       {typeOfStream.SOME_OTHER_ENUM_VAL, Delegate.CreateDelegate(typeof(ParseDelegate<XmlNode>), this, "MyOtherMethod")} 
      }; 
} 

public bool MyMethod(string some_string) 
{ 
    ... 
} 

public bool MyOtherMethod(XmlNode some_node) 
{ 
    ... 
} 

を、私は"MyMethodは"MyOtherMethodを取り除くと、それthis.MyMethodthis.MyOtherMethodを作る取得したいと思います:現在、私は持っています。オプション?

私はディクショナリルックアップを使用し、データmojoを任意のメソッド(引数の任意の束縛を持つ明確に定義されたメソッド)に指し示すことができる任意のソリューションを公開しています。ただ、デリゲートの正しい種類にキャスト

答えて

10

parseDictionary = new Dictionary<typeOfStream, Delegate>() 
{ 
    { typeOfStream.SOME_ENUM_VAL, (ParseDelegate<string>) MyMethod) }, 
    { typeOfStream.SOME_OTHER_ENUM_VAL, (ParseDelegate<XmlNode>) MyOtherMethod } 
}; 
+0

あなたは ''を意味するものではありませんでしたか? –

+1

パーフェクト。あなたが代議員にキャストできるかどうかは分かりませんでした。可能性のまったく新しい世界を開く! – Nick

関連する問題