我有一个通用存储库类,其中有各种方法标记有PostSharp方面(SecuredOperation
)...
public class Repository<TEntity> : IRepository<TEntity>, ISecurable
where TEntity : class, IEntity
{
...
[SecuredOperation(DomainAccess.Write)]
public virtual void Add(TEntity entity)
{
this.Context.AddEntity(entity);
}
...
}
在我的一些派生存储库类中,我想更改Add()
方法(例如DomainAccess.None
)所需的访问权限。
我最初的尝试是覆盖该方法并重新应用方面......
public class SomeRepository : Repository<SomeEntity>
{
...
[SecuredOperation(DomainAccess.None)]
public override void Add(SomeEntity entity)
{
base.Add(entity);
}
...
}
方面正确地应用于这个被覆盖的方法,但是一旦我调用基类实现,基类方面就会启动。
显然,在派生类中复制基类逻辑并不是一个解决方案。
如何解决在派生类中覆盖基类方面的问题?