需求是能够动态修改属性的值,但是这个对象不是具体的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就是属性,至少编译的时候,这样写会通过,并且在执行的时候,会自动获取到这个属性,接下来就可以进行编辑了。