将Dictionary属性作为Object访问

时间:2015-10-14 10:50:38

标签: c# .net visual-studio intellisense

我有这个课程:

public class Class1
{
    public Dictionary<string, Class2>  Items { get; set; }
}


public class Class2
{
    public string Code { get; set;}
    public string Name { get; set; }
}

这个

class Program
{
    static void Main(string[] args)
    {
        Class1 c = new Class1();
        c.Items = new Dictionary<string, Class2>();

        c.Items.Add("Item0001", new Class2() { Code = "0001", Name = "Item ABC" });
        c.Items.Add("Item0002", new Class2() { Code = "0002", Name = "Item XYZ" });
    }
}

我想知道的是(我已经用Google搜索了但我找不到相关的信息)是否有办法使用Intellisense或类似的东西来访问这样的对象。

c.Items.Item0001.Code

1 个答案:

答案 0 :(得分:6)

Intellisense在这方面不会帮助你,因为你的字典项是在运行时定义的,因此在编译时无法获得有关它的信息。

但您可以使用ExpandoObjectdynamic;

dynamic foo = new ExpandoObject();
foo.Item0001 = new Class1();
foo.Item0002 = new Class1();

var asDict = (IDictionary<string, object>)foo;
var item1 = asDict["Item0001"];