2017-04-11 4 views
0

私のプログラム内の特定のクラスに対して属性を使用してメソッド呼び出し権限を与える予定ですが、理由I、特定のクラスが属性を使用して特定のメソッドを呼び出さないようにします。

[ForbiddenMethodsAttr(listOfMyForbiddenMethods)] 
public class Customer 
{ 
    public Customer { } 
} 

そして、私は与えられた関数をコールする場合、インテリセンスが、私ができないことを私に温める必要があります。たとえば

は、ここで私は私のCustomerクラスが見えるようにしたいものですこれらの関数を呼び出すといくつかの問題が発生する可能性があります。私はこのプロジェクトをコーディングする唯一の人ではありませんが、いくつかの友人も同様です。そのような属性を記述することができれば、それを行う方法は?

+2

基本的にはRoslynコードアナライザーを書く必要があります。この能力は通常のC#言語の一部ではありません。 –

+0

私はカジュアルアトリビュートのためにあまりにも先進的な何かに行くつもりですか? – agiro

+0

許可されていない呼び出しが行われた場合、メソッドレベルの属性で例外をスローできない理由はわかりません。 –

答えて

1

メソッドを古いものとしてマークすると、それらを呼び出すすべての人にコンパイラの警告が表示されます(ただしエラーではありません)。それはエレガントではありませんが、どちらもスコープ規則を使用せずにメソッド呼び出しを制限しようとしていません。

+0

質問には妥当かつ答えますが、私はこのケースではチーム全体の構造を再考していると思います。あなたの助言に感謝します。 – agiro

関連する問題