2016-10-16 7 views
0

"契約"と "実装"を分けようとしています。セキュリティ機能は「契約」でもあります(これらの機能の正確さの実装方法の一部は別です)。抽象クラスを作成して子孫メソッドを代行する方法

public abstract class SomeServiceContract 
{ 
    [Authorize] 
    public abstract void SomeMethod(); 
} 

public class SomeServiceImpl : SomeServiceContract 
{ 
    public override void SomeMethod() 
    { 
     // this can just be implemented, no need to worry about access rigts 
    } 
} 

(継承されている)承認属性の唯一の目的は、インターセプタでチェックされる。

は、だから私はこのような何かを書くことをしようとしています。しかし、「インターセプト可能」であるためには、メソッドは仮想でなければならず、例えばNinjectでラップすることもできません。そして、私は仮想化するためのオーバーライドされたメソッドを作ることはできません。

他にどのように実装できますか?

答えて

0

このメソッドは、デフォルトでは仮想です。

制限は、「sealed」とマークされている場合のみです。

抽象クラスからメソッドをオーバーライドする場合、メソッドは仮想です。インターフェイスからの場合 - メソッドは「仮想」とマークされていない限り、「バーチャルシール」となります

+0

ダイナミックプロキシの傍受に適した属性継承と「ラップ可能」メソッドの両方を取得できます。 – yaapelsinko

+0

はい、それは本当です –

関連する問題