2017-09-30 4 views
-8

キーが文字列であり値がメソッドであり、何かを返すことも何も返さない(void)ため、すべて同じ型ではない辞書を作成する必要があります。どのようにC#でそれを行うには?C#で値としてメソッドを持つ辞書を作成する

+0

あなたが既に試したことを私たちに示す必要があります。 – FCin

+0

辞書にFuncを保存するだけでもいいですか? – Max

+0

聞こえません。辞書の値の型はすべて同じでなければなりません。 –

答えて

1

あなたのデザインは強く型付けされた言語で欠陥があるようです。私はjavascriptでこれはおそらく一般的な使用法ですが、C#では知っている。

値を返すことはできません。すべての方法で値を返す必要があります。

class ResultClass 
{ 
} 

class OtherClass 
{ 

} 

class MethodHolder 
{ 
    private readonly Dictionary<string, Func<object[], object>> Dict; 

    public MethodHolder() 
    { 
     Dict = new Dictionary<string, Func<object[], object>>(); 
     Dict.Add("MethodA", (x) => MethodA(x)); 
     Dict.Add("MethodB", (x) => MethodB(x)); 
     Dict.Add("MethodC", (x) => MethodC(x)); 
    } 

    public object MethodA(object[] param) 
    { 
     //some code 
     return new ResultClass(); 
    } 

    public object MethodB(object[] param) 
    { 
     //this is your void example 
     return null; 
    } 

    public object MethodC(object[] param) 
    { 
     //some more code 
     return new OtherClass(); 
    } 

    public void HowToUse() 
    { 
     var method = Dict["MethodA"]; 
     method.Invoke(new object[] { }); 
    } 
} 

このコードは、あなたのデザインを再加工する必要があります。

関連する問題