このようなものでなければならないと思います。属性{}キャッチ
public class HandleErrorAttribute : Attribute
{
public void Execute()
{
try
{
method.Execute();
}
catch(Exception ex)
{
//log
}
}
}
これは可能ですか?
このようなものでなければならないと思います。属性{}キャッチ
public class HandleErrorAttribute : Attribute
{
public void Execute()
{
try
{
method.Execute();
}
catch(Exception ex)
{
//log
}
}
}
これは可能ですか?
あなたはPostSharpのようなものを探しています。実装する価値があります。しかし、実装はこの質問の範囲をはるかに超えています。このlinkを見ると、あなたが望むだけのことをしていることがわかります。
だから、PostSharpをダウンロードして始めてください。さらに質問がある場合は、お手伝いできます。しかし、そのドキュメントは非常に優れており、実装するにはケーキです。
[Serializable]
public class MyExceptionHandling : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
// here you would perform the logging
}
}
その後、あなたの方法であなたは新しい属性でそれをマークアップします:現在の枠組みでは
public class Foo
{
[MyExceptionHandling]
public void Do(){}
[MyExceptionHandling]
public void Don(){}
}
、ありません。 AOPライブラリの1つで可能かもしれません。 http://www.sharpcrafters.com/aop.net – asawyer
それは属性が何であるかではありません。 @asawyerが書き留めるように、ポストシャープはこれを許すことができます。将来のバージョンでは、コンパイラのリライト(別名Roslyn)のおかげで、このようなことが拡張の可能性があります。しかし、現時点では:いいえ –
@MarcGravell、これはRoslynのために組み込まれると思いますか?それとも、オープンソースプロジェクトを構築する必要があると思いますか? –