微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

有没有使用面向方面编程注入重复代码的替代方法.
假设我们有一个包含许多属性的类,如果属性更改了它的值,我们想记录它.

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);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐