Мы хотели бы замаскировать некоторую информацию в наших бизнес-объектах на основе ролей, учитывая, что наша кодовая база используется совместно несколькими проектами, и мы хотели бы сделать это в бизнес-логике, а не в пользовательском интерфейсе.
Наша идея состояла в том, чтобы override
использовать метод LoadProperty
в CSLA, чтобы мы могли изменить значение один раз вместо того, чтобы устанавливать его в немаскированное значение, а затем маскировать после DataPortal_Fetch
. Проблема в том, что виртуальный метод LoadProperty
никогда не запускается, см. код ниже:
protected override void LoadProperty(IPropertyInfo propertyInfo, object newValue)
{
//Do masking
newValue = DoMask(newValue, maskAttribute);
base.LoadProperty(propertyInfo, newValue);
}
Ниже приведены два метода в BusinessBase
, но только один из них — virtual
:
protected void LoadProperty<P>(PropertyInfo<P> propertyInfo, P newValue);
protected virtual void LoadProperty(IPropertyInfo propertyInfo, object newValue);