none
dynamic 动态设置属 RRS feed

  • 问题

  •  有个一个 属性列表  比如 stirng[] str;

    dynamic 读取这个 属性列表 增加属性。而不是 在编码的时候 用 '.' 来设置属性。

    比如

    stirng[] str =new string[]{"pr1","Name",.....};
    dynamic d = new ExprenObject();
    //这个D 要读取 str 里面的属性列表 创建 动态的 dynamic 类

    2012年6月4日 9:19

答案

  • namespace BinarySearch
    {
        public class AutoImportDynamic : DynamicObject
        {
            /// <summary>
            /// 动态设定属性—数值对应结构
            /// </summary>
            public Dictionary<string, object> attributeValues { get; set; }
    
            /// <summary>
            /// 动态返回对应属性的数值
            /// </summary>
            public override bool TryGetMember(GetMemberBinder binder, out object result)
            {
                if (attributeValues.ContainsKey(binder.Name))
                {
                    result = attributeValues[binder.Name];
                    return true;
                }
                result = null;
                return false;
            }
    
           
        }
        public class Test
        {
            static void Main(string[] args)
            {
                dynamic ai = new AutoImportDynamic();
                ai.attributeValues = new Dictionary<string, object>();
                ai.attributeValues.Add("姓名", "LX");
                ai.attributeValues.Add("性别", "雄性");
                ai.attributeValues.Add("年龄", "23");
    
                //动态获取
                Console.WriteLine(ai.姓名);
                Console.WriteLine(ai.性别);
                Console.WriteLine(ai.年龄);
            }
        }
    }
    
    继承DynamicObject并且重写TryGetMember方法。我这里给出了一个“超强”的扩展版DynamicObject示例,供您参考!

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月5日 3:36
    版主