首页 新闻 会员 周边

自动识别哪些属性值被更改了

0
悬赏园豆:100 [待解决问题]

public class ClassA
{
public string Name
{
get;
set;
}
public string Value
{
get;
set;
}
public void Update()
{
//哪个属性更改了打印出哪个属性名
}
}
var obj=new ClassA();
obj.Name="test";
obj.Update();//不更改ClassA的属性结构实现Update方法,不能以字符串形式传参
===================================

使用AOP解决了,但是有新的问题

[Attribute.ModelProxy]
public abstract class IModel : ContextBoundObject,ICloneable

  1. 这样做后没法调试,调试的对象都是System.Runtime.Remoting.Proxies.__TransparentProxy
  2. var menu = new Menu() { Name = "ssss" };
    dic.Add(menu, new List<CRL.RoleAuthorize.Menu>());
    bool a = dic.ContainsKey(menu);
    a为false 对象放到字典后就找不到了

hubro的主页 hubro | 初学一级 | 园豆:98
提问于:2015-02-15 18:25
< >
分享
所有回答(3)
0

采用 AOP,记录属性值的修改。

Launcher | 园豆:45045 (高人七级) | 2015-02-16 11:07

AOP,我试试

支持(0) 反对(0) hubro | 园豆:98 (初学一级) | 2015-02-16 17:43
0

一种是楼上的 AOP拦截方式记录

二种是反射类型的属性,比较每个属性的值,有修改的就打印

茂茂 | 园豆:2892 (老鸟四级) | 2015-02-16 15:24

比较值会遇到默认值的问题比如int 0也是0,不设也是0

支持(0) 反对(0) hubro | 园豆:98 (初学一级) | 2015-02-16 17:44

@hubro:默认值没关系吧,都是0就是没有变化呀

支持(0) 反对(0) 茂茂 | 园豆:2892 (老鸟四级) | 2015-03-10 23:14
1

http://www.codeproject.com/Articles/35368/AOP-Implementation-of-INotifyPropertyChanged

 

FYI

Yu | 园豆:12980 (专家六级) | 2015-02-17 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册