古い質問
だから、これは私が達成しようとしていることです...私は既存の抽象クラスを持っています.. Class1.cs という名前を付けます。多くのメソッドの定義が含まれています。そのため、Class1 クラスのすべてのメソッドに実装する必要があるいくつかの新しい機能を含めました。だから例の-
public void Method_1(string arg1, string arg2) { /* //some code implementation specific to Method_1 */ Dictionary<string, object> dict= new Dictionary<string, object>(); //there can be more or less arguments in other methods dict.Add("Arg1", arg1); dict.Add("Arg2", arg2); Method_2(dict); }
すべてのメソッドでまったく同じことを行う必要がありますが、引数は異なる場合があります。したがって、辞書オブジェクトには「n」個のパラメーターを含めることができます。同じコードを繰り返し追加する手作業を回避できる方法はありますか (可能であればデザインパターンを使用してください)。
私は明確ではないと思います...辞書生成メカニズムをバンドルすることは私の関心事ではありません.すべてのメソッド(約50)に同じコードを追加する必要があります..同じコードを手動で再度呼び出すことを避けようとしていますそしてまた50回…
質問
を編集して再構成しました。最終的に、プライベート メソッドで辞書を作成し、それを他のすべてのメソッドで呼び出すことにしました。この段落の前にあるものはすべて無視してください。私の方法は次のようになります
public void Method1(string a, string b , string c)
{
Dictionary<string,object> dict = BuildDictionary(new {a, b ,c});
/*the dict object should have the following structure
key=a, value= value of a
key =b , value = value of b
key =b , value = value of b*/
}
public void Method2(string x, string y)
{
Dictionary<string,object> dict = BuildDictionary(new {x,y});
/*the dict object should have the following structure
key= x, value= value of x
key =y , value = value of y */
}
private Dictionary<string,object> BuildDictionary(params object[] values)
{
//values.ToString() gives = { a= "Value of a", b== "Vaue of b", c= "Value of c"}
//Copy pasting Simon's Code here(use of anonymous objects)
var dictionary = values.GetType()
.GetProperties()
.ToDictionary(pi => pi.Name, pi => pi.GetValue(values));
//this dictionary object gives me a count of 7 with keys as the properties of the object datatype(which is not relevant to my case).
}
では、目的の辞書構造を取得するには、BuildDictionary メソッドにどのような変更を加える必要があるでしょうか?