Nested Dictionary collection in .NET

后端 未结 6 1994
伪装坚强ぢ
伪装坚强ぢ 2020-12-17 06:42

The .NET Dictionary object allows assignment of key/values like so:

Dictionary dict = new Dictionary&l         


        
6条回答
  •  旧巷少年郎
    2020-12-17 07:39

    I think, your case is good place to use DynamicObject. I'll create an example for json using Dictionary internally.

    Same idea can be used for xml also.

    string json = @"{""Name"":""Joe"",
                     ""Age"":30,
                     ""Address"":{ ""City"":""NY"" }}";
    
    dynamic dynObj = new DynamicJson(json);
    
    Console.WriteLine(dynObj.Name);
    Console.WriteLine(dynObj.Age);
    Console.WriteLine(dynObj.Address.City);
    

    --

    public class DynamicJson : DynamicObject
    {
        Dictionary _Dict;
    
        public DynamicJson(string json)
        {
            _Dict = (Dictionary)new JavaScriptSerializer().DeserializeObject(json); 
        }
    
        DynamicJson(Dictionary dict)
        {
            _Dict = dict;
        }
    
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            result = null;
            object obj;
            if (!_Dict.TryGetValue(binder.Name, out obj)) return false;
    
            if (obj is Dictionary)
            {
                result = new DynamicJson((Dictionary)obj);
            }else
            {
                result = obj;
            }
            return true;
        }
    }
    

提交回复
热议问题