2017-05-25 74 views
0

我需要將一個類的對象作爲其他類中的參數動態地傳遞。我有以下代碼,必須自定義。如何動態地將多個對象實例傳遞給另一個類。


ABC abc = new ABC(); 
    abc.id = "E100"; 
    abc.type = ABCType.BB_UNIQUE; 
    abc.typeSpecified = true; 

    ABC t = new ABC(); 
    t.id = "I"; 
    t.yellowkey = MarketSector.Equity; 
    t.yellowkeySpecified = true; 
    t.type = ABCType.t; 
    t.typeSpecified = true; 

    ABC abc2 = new ABC(); 
    abc2.id = "GB"; 
    abc2.type = ABCType.ISIN; 
    abc2.typeSpecified = true; 

    ABCs i = new ABCs(); 
    i.abc = new abc[] { abc, abc2, t }; 

我能夠按如下方式動態地創建該類的對象,但我不能夠將它傳遞給另一個類:


string value = "E100,I"; 
    string[] id; 
    id = value.Split(','); 
    IDictionary<string, ABC> col = new Dictionary<string, ABC>(); 
    foreach (string val in id) 
    { 
     col[val] = new ABC(); 
     col[val].id = val; 
    } 
    ABCs i = new ABCs(); 

這部分是我在哪裏掙扎 i.abc = new abc [] {abc,abc2,t}; 我將如何將IDictionary的動態對象傳遞給i.abc? 任何幫助將不勝感激 感謝

回答

1

IDictionary<TKey, TValue>接口有一個Values屬性包含在它返回一個ICollection<TValue>IDictionary<TKey, TValue>每個值。

包括System.Linq命名空間後,ICollection<T>接口獲得一個擴展方法ToArray<T>()其中集合轉換爲T類型的陣列。 所以對於你的問題的解決方案應該是以下行:

i.abc = col.Values.ToArray(); 
+0

感謝您的答覆,但這是錯誤我得到當我嘗試您的解決方案。 「不包含'ToArray'的定義,並且沒有擴展方法'ToArray'接受類型爲」 –

+0

「的第一個參數您必須包含System.Linq命名空間。請參閱MSDN:https://msdn.microsoft.com/de-de/library/bb298736(v=vs.110).aspx 我編輯了我的答案以包含此詳細信息。 – Aurril

相關問題