2012-11-07 8 views
14

私は、APIへの呼び出しをラップしていますし、私の方法のほとんどは彼らの最初の行にあります。C#用のpythonデコレータのようなものがありますか?

Pythonで
if (!Gree.Authorizer.IsAuthorized()) 
{ 
    return; 
} 

私は@login_requiredのようなもので、それらのメソッドを飾るでしょう。

c#のロジックの種類をリファクタリングするのにどのようなものを使用しますか?

答えて

6

あなたは、より一般的なプログラミング方法論のサブセット、すなわちアスペクト指向プログラミングを探しています。

C#はいくつかのライブラリでサポートされているようですが、CLRの機能のおかげで、自分自身を公開することもできます。 Aspect Oriented Programming using .NETの基本的な原則を説明しています(私は記事の一部をC#の仕様についてリンクしていますが、PostSharpのような既成のソリューションを探しているならば残りは同様です)。

+0

リンクをありがとう。これがUnity3dで動作するかどうか確認します。 – Macarse

4

thisなど、C#用の任意のAOPツールを使用できます。 PostSharpで

、ソフトウェア開発者は、側面と呼ばれるクラスに実装 パターンをカプセル化し、カスタム属性を使用して コードにこれらの側面を適用することができます。

+0

PostSharpは '.exe'です。 Monoを使ったUnity3dから何かを使いたい。 – Macarse

2

私はPythonに慣れていませんが、あなたは "属性"(MSDN)(Javaアノテーションにかなり似ています)を探しているようです。

特に、.NETでは「AuthorizeAttribute」が提供されています。これは、まさにあなたが望むもの(さらに多少)を提供します。あなたが.NETの下にいない間、これはあなたが達成しようとしているimplementatinoのいくつかの光をまだ残しているかもしれません。

+2

'attributes'はクラス/メソッドなどに添付されたメタデータだけであり、何もしません。リフレクションを使用してこのメ​​タデータを読み取る別のツールを使用する必要があります。これはすべてのAOPツールが行うことです – Ankur

関連する問題