2017-01-31 17 views
2

値を持つ辞書があります。各値を動的インスタンスプロパティに割り当てる必要があります。また、動的変数のプロパティの名前は、辞書のキーと同じにする必要があります。このような 何か:辞書から動的オブジェクトへの値の代入C#

dynamic response = new ExpandoObject(); 
var dict = new Dictionary<string, string>(); 
string s; 
dict.TryGetValue("Name", out s); // imagine dictionary contains some data 
response.Name = s; 
dict.TryGetValue("Street", out s); 
response.Street = s; 
.... 

私は、ちょうど各値を反復処理するためにいくつかのより効率的な方法があると確信しています。 forループを作成すると、毎回動的インスタンスのプロパティ名を記述する方法はありますか?ありがとうございました。あなたはExpandoObjectのプロパティにアクセスしていないので、私はここにdynamicを使用していない

var response = new ExpandoObject(); 
var dict = new Dictionary<string, string>(); 
// imagine dict contains some data 
foreach(var kvp in dict) 
{ 
    (response as IDictionary<string, object>)[kvp.Key] = kvp.Value; 
} 

注:それはそれはあなたがちょうどことができますので、「プロパティ」値を格納する方法を説明しますので、

答えて

2

ExpandoObjectIDictionary<string, object>を実装します動的に独立性に大きな違いはありませんが、このメソッドを頻繁に使用すると、インデクサーが実行時ではなくコンパイル時にバインドされるため、パフォーマンスが全体的に向上する可能性があります。

+0

タイプ「System.Dynamic.ExpandoObject」の式に[]でインデックス付けを適用できません " – OlegI

+0

@OlegIaremchuk次のようにしてください:(IDictionary )[kvp.Key] = kvp 。値; –

+0

@MaksimSimkin完璧。ありがとうございました – OlegI

関連する問題