zoukankan      html  css  js  c++  java
  • .net dynamic动态加属性

    1. class Test : System.Dynamic.DynamicObject  
    2.         {  
    3.             public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result)  
    4.             {  
    5.                 if (map != null)  
    6.                 {  
    7.                     string name = binder.Name;  
    8.                     object value;  
    9.                     if (map.TryGetValue(name, out value))  
    10.                     {  
    11.                         result = value;  
    12.                         return true;  
    13.                     }  
    14.                 }  
    15.                 return base.TryGetMember(binder, out result);  
    16.             }  
    17.   
    18.             System.Collections.Generic.Dictionary<string, object> map;  
    19.   
    20.             public override bool TryInvokeMember(System.Dynamic.InvokeMemberBinder binder, object[] args, out object result)  
    21.             {  
    22.                 if (binder.Name == "set" && binder.CallInfo.ArgumentCount == 2)  
    23.                 {  
    24.                     string name = args[0] as string;  
    25.                     if (name == null)  
    26.                     {  
    27.                         //throw new ArgumentException("name");  
    28.                         result = null;  
    29.                         return false;  
    30.                     }  
    31.                     if (map == null)  
    32.                     {  
    33.                         map = new System.Collections.Generic.Dictionary<string, object>();  
    34.                     }  
    35.                     object value = args[1];  
    36.                     map.Add(name, value);  
    37.                     result = value;  
    38.                     return true;  
    39.   
    40.                 }  
    41.                 return base.TryInvokeMember(binder, args, out result);  
    42.             }  
    43.         }  
    44.         static void Main(string[] args)  
    45.         {  
    46.             dynamic t = new Test();  
    47.             string @a = "gg";  
    48.             t.set(@a,"galrj");  
    49.             Console.WriteLine(t.gg);  
    50.         }  

    http://blog.csdn.net/cqims21/article/details/17613733

    https://q.cnblogs.com/q/15970/

  • 相关阅读:
    unicodedata.normalize()/使用strip()、rstrip()和lstrip()/encode和decode 笔记(具体可看 《Python Cookbook》3rd Edition 2.9~2.11)
    split与re.split/捕获分组和非捕获分组/startswith和endswith和fnmatch/finditer 笔记
    比较字典推导式/dict()/通过键来构造的字典的速率 笔记
    itertools.groupby()/itertools.compress() 笔记
    operator笔记
    slice.indices()/collections.Counter笔记
    deque/defaultdict/orderedict/collections.namedtuple()/collections.ChainMap() 笔记
    实践中总结出来对heapq的一点理解
    学习笔记(42)- 端到端对话到底是什么
    机器翻译-领域专家
  • 原文地址:https://www.cnblogs.com/zcm123/p/6072982.html
Copyright © 2011-2022 走看看