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);
}
...
}
アスペクトはこのオーバーライドされたメソッドに正しく適用されますが、基本クラスの実装を呼び出すと、基本クラスのアスペクトが開始されます。
明らかに、派生クラスで基本クラスのロジックを複製することは解決策ではありません。
派生クラスで基本クラスのアスペクトをオーバーライドするというこの問題を回避するにはどうすればよいですか?