Jef*_*eff 5 c# generics reflection delegates .net-3.5
C# - .net 3.5
我有一系列继承自同一基类的类.我希望在访问(获取或设置)derrived类中的属性时调用基类中的方法.但是,我不想在每个属性中编写代码来调用基类...相反,我希望有一种声明性方法可以将此活动"接收"到基类中.
在需求中添加一些spice,我需要确定访问的属性的名称,属性值及其类型.
我认为解决方案将是委托,泛型和反射的巧妙组合.我可以设想在运行时创建某种类型的委托分配数组,但是在构造函数中迭代MemberInfo会影响性能,而不是我想要的.同样,我希望有更直接的"声明"方式来做到这一点.
任何想法都非常感谢!
我不相信可以通过声明的方式做到这一点,我从未见过这样做。不过,您可以做的是在基类上实现 INotifyPropertyChanged 接口,并在基类中实现该接口。像这样的东西:
public class A : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
protected virtual void RaiseOnPropertyChanged(object sender, string propertyName)
{
if (this.PropertyChanged != null)
PropertyChanged(sender, new PropertyChangedEventArgs(propertyName);
}
public A()
{
this.PropertyChanged += new PropertyChangedEventHandler(A_PropertyChanged);
}
void A_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//centralised code here that deals with the changed property
}
}
public class B : A
{
public string MyProperty
{
get { return _myProperty; }
set
{
_myProperty = value;
RaiseOnPropertyChanged(this, "MyProperty");
}
}
public string _myProperty = null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |