加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 面向方面编程的替代方案

发布时间:2020-12-15 21:49:39 所属栏目:百科 来源:网络整理
导读:有没有使用面向方面编程注入重复代码的替代方法. 假设我们有一个包含许多属性的类,如果属性更改了它的值,我们想记录它. class Person { public string Name { get{return name;} set { name = value; LogPropertyChanged("Name"); } } public int Age { get{
有没有使用面向方面编程注入重复代码的替代方法.
假设我们有一个包含许多属性的类,如果属性更改了它的值,我们想记录它.

class Person 
{
 public string Name
 {
    get{return name;}
    set
    { 
      name = value;
      LogPropertyChanged("Name");
    }
  }

  public int Age
  {
    get{return age;}
    set
    { 
      age = value;
      LogPropertyChanged("Age");
    }
   }      
}

如何在不使用面向方面编程的情况下摆脱安全检查,日志记录等类似的重复代码.

解决方法

你可以随时做这样的事情

a)在对象的某个父类上

protected void SetProperty<T>(Expression<Func<T>> exp,T value)
{
    MemberExpression body = (MemberExpression)exp.Body;
    //set the actual value
    (body.Member as FieldInfo).SetValue(this,value);

    //do some logging,locking,etc. with the field name
    string fieldName = body.Member.Name;
}

b)在你的物体上

private int age;
public int Age
{
    get
    { 
        return age; 
    }
    set
    {
        SetProperty(() => age,value);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读