2012-02-06 12 views
0

私は、ObjectDataSource(および他のリフレクトベースのオブジェクト)で使用するための、いくつかの共有メソッドをアプリケーションに持っています。彼らは、しかし、彼らは、すべての1回の使用方法です(彼らはすべての呼び出しですべてを再構築)、自動パラメータのチェック、フィルタリングなどの多くを処理します。誰かがコードを直接記述してインスタンスメソッドを呼び出す方が、呼び出し間にすべてのフィルタリングなどが格納されるようにする方がはるかに優れています。メソッドはコード属性を意図していませんか?

これを示す方法に追加できる属性はありますか?メソッドがリフレクションなしで呼び出されないようにするのが最善です。次善策は、このメソッドが間違って使用されているという警告を出すことです。

<MethodNotIntendedForCode()> _ 
Public Shared Function DataAccessMethod(Parameters....) As ObjectQuery(Of DataType) 

答えて

2

あなたが試みることができる:

<Obsolete("This isn't the method you are looking for")> 

コードで呼び出された場合に警告を作成します

は、ここで私はacheiveしたいもののサンプルです。 ObsoleteAttributeのオプションを使用して、直接呼び出された場合にエラー(コンパイル時)とマークすることもできます。

他のオプションは、明らかに非公開にすることです。他の有用な属性は、EditorBrowsableAttributeBrowsableAttributeです。

+0

私はそれを非公開にしても、ODSはまだリフレクションによってそれにアクセスできますか?非公開の目的を打ちのめすのではないでしょうか?また発見できないようにする? –

+0

@ just.another.programmerあなたが反射を使用しているとき、空は限界です。 ODSが非公開のメソッドを使用する**を選択するかどうかは、ODS –

+0

までです。古い/ブラウズ可能なコンボで遊んでいますが、これは本当にうまく動作します。ありがとう! –

関連する問題