2016-09-02 3 views
3

以下のログに使用するインデックスとアスペクトメソッド。アスペクトメソッドにパラメータの名前を渡す方法

処置:

[LogAspect] 
public ActionResult Index(int projectId) 
{ 
    ... 
    return PartialView(model); 
} 

アスペクト方法:

[Serializable] 
public class LogAspect : OnMethodBoundaryAspect 
{ 
    public override void OnExit(MethodExecutionArgs args) 
    { 
     var parameters = JsonConvert.SerializeObject(args.Arguments.ToList()); 
     string message = string.Format("Releted method parameters:{0}", parameters); 
     Logger.Info(string.Format("Controller:{0}, Action:{1}", args.Method.DeclaringType.FullName, args.Method.ToString()), message); 
     base.OnExit(args); 
    } 
} 

私は[1]のような整数としてprojectidの値を取得することができます。 しかし、私はこの情報を記録するためにこのアスペクト方法を使用していると思いますので、パラメータ名(データベースに書き込まれている)がない場合は意味がありません。[projectId:1]などのようなパラメータを取得します。

コントローラでロガーを使用していた場合は、これは簡単に反映されますが、この処理はアスペクト方式で実行しています。

答えて

2

Argumentsには値のみが含まれています。しかし、通常のリフレクションインターフェイスを持っていますMethod

+0

私はセレクタとソースの両方をnullに返しますが、これを達成しようとしました。 – TyForHelpDude

関連する問題