zoukankan      html  css  js  c++  java
  • 动态对象属性操作

    需求是能够动态修改属性的值,但是这个对象不是具体的model对象

    做法是借用DynamicObject对象来处理。

    第一步,创建一个对象来继承DynamicObject

    public class DynamicDictionary : DynamicObject
        {
            // The inner dictionary.
            Dictionary<string, object> dictionary
                = new Dictionary<string, object>();
    
            // This property returns the number of elements
            // in the inner dictionary.
            public int Count
            {
                get
                {
                    return dictionary.Count;
                }
            }
    
            // If you try to get a value of a property 
            // not defined in the class, this method is called.
            public override bool TryGetMember(
                GetMemberBinder binder, out object result)
            {
                // Converting the property name to lowercase
                // so that property names become case-insensitive.
                string name = binder.Name.ToLower();
    
                // If the property name is found in a dictionary,
                // set the result parameter to the property value and return true.
                // Otherwise, return false.
                return dictionary.TryGetValue(name, out result);
            }
    
            // If you try to set a value of a property that is
            // not defined in the class, this method is called.
            public override bool TrySetMember(
                SetMemberBinder binder, object value)
            {
                // Converting the property name to lowercase
                // so that property names become case-insensitive.
                dictionary[binder.Name.ToLower()] = value;
    
                // You can always add a value to a dictionary,
                // so this method always returns true.
                return true;
            }
        }

    第二步,定义一个dynamic类型的变量,然后用这个对象进行实例化

    dynamic data = new DynamicDictionary();
    data.Url = "XXX";

    这里的Url就是属性,至少编译的时候,这样写会通过,并且在执行的时候,会自动获取到这个属性,接下来就可以进行编辑了。

  • 相关阅读:
    转:Nginx 日志文件切割
    nginx日志切割
    nginx日志配置
    Mongodb数据更新命令
    Android开发书籍推荐
    全面解读python web 程序的9种部署方式
    PowerDesinger15设置字体大小
    A* Pathfinding Project (Unity A*寻路插件) 使用教程
    jQuery的DOM操作之捕获和设置
    如何写一个好的方法
  • 原文地址:https://www.cnblogs.com/Rexcnblog/p/8024783.html
Copyright © 2011-2022 走看看