2017-05-25 46 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

相关问题