2016-04-26 21 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

好点,谢谢! :)虽然,如果数组有奇数个元素,我会抛出一个异常。 –