0

コードのいたるところにこのパターンがあります。

using (ServiceAccess ws = new ServiceAccess())
{
//...
//code here to talk to webservice ws
//...
}

このボイラープレートコードを、Webサービスと通信する必要のある関数の属性に置き換えるにはどうすればよいですか?(ずっと前にJavaでHibernateを使って何かをしたときのことを思い出します。使用できる「変換」アノテーションがあり、関数にボイラープレートコードを自動的に挿入します。 。){}の使用はすでにかなり良いですが、まったく持っていない方がいいでしょう...属性を持つことは、Webサービスを話すものではなくWebサービスを話すものとして機能を文書化するのにも役立ちます。

編集:AOPはトリックを行いますか?

4

4 に答える 4

1

spring.netの側面を見てください。

于 2009-02-05T20:42:13.547 に答える
1

PostSharpもご覧ください。属性を使用してアスペクトを実装することはできません。それを使用して、目的を達成できます。

于 2009-02-05T20:44:12.717 に答える
0

あなたができる最善のことは、そのコードをスニペットとして挿入するためのショートカットを作成することだと思います。属性を介して変数宣言をメソッドに組み込むことはできません。言い換えれば、属性はコードに関することしか教えてくれません。コード自体を変更することはできません。

于 2009-02-05T20:39:14.443 に答える
0

「アスペクト」タイプのもの...これは、選択したコードで特定のメソッドを装飾する方法です。メソッドの呼び出し後などに破棄したい場合は、アスペクトとコードがサービスにアクセスできる必要があります。また、サービス クラスの有効期間をほとんど制御できないことも意味します。

最近のいくつかのコードでは、サービス インスタンスを取得できるコンテキストをクラスに提供しています。それらは、あなたが渡す可能性のある代理人に提供されます。クロージャーが残った後、任意の処分を行うことができます...

DateTime serverTime;
context.UseService<IInfoService>(s=>serverTime = s.GetTime());
于 2009-02-05T22:07:50.833 に答える