2016-04-26 14 views
1

ExpandoObjectには便利なファクトリメソッドはありますか?何かのように、私は知らない、ExpandoObjectの便利な工場ですか?

dynamic disney = new ExpandoObject("First", "Donald", "Last", "Duck"); 
+0

あなたは 'dynamic disney = new ExpandoObject {First =" Donald "、Last =" Duck "};'を試しましたか?それがうまくいくかどうか不思議です(現時点で私のWindowsワークステーションにアクセスできない)。 – dasblinkenlight

答えて

5

いいえ、分ではなく書くことができます。 :) ここに行く:もちろん

C#

class Program 
{ 
    static void Main(string[] args) 
    { 
     dynamic ex = ExpandoFactory.Create("First", "Donald", "Last", "Duck"); 
     Console.WriteLine(ex.First); 
     Console.WriteLine(ex.Last); 
    } 
} 

static class ExpandoFactory 
{ 
    internal static ExpandoObject Create(params string[] items) 
    { 
     //safety checks omitted for brevity 
     IDictionary<string, object> result = new ExpandoObject(); 
     for (int i = 0; i < items.Length; i+=2) 
     { 
      result[items[i]] = items[i + 1]; 
     } 
     return result as ExpandoObject; 
    } 
} 

を、あなたは事前に、配列のカーディナリティをチェックする必要があります。 私はこれが役立つことを願っています。

+0

ループ条件を 'i + 1 dasblinkenlight

+0

良い点、ありがとう! :)配列が奇数個の要素を持つ場合は例外がスローされますが、 –

関連する問題