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

好點,謝謝! :)雖然,如果數組有奇數個元素,我會拋出一個異常。 –