私は監査部分に取り組んでおり、追加情報のために監査に記録する必要があるメソッドにパラメーターをマークするために属性を使用しようとしています。しかし、どういうわけか、属性が存在するかどうかを確認できないようです。
私のコード:
[Audit(AuditType.GetReport)]
public Stream GetReportStream([AuditParameter] Report report)
{
...
}
[AttributeUsage(AttributeTargets.Parameter)]
public class AuditParameterAttribute : Attribute
{
}
そして、私がそれを取得しようとしているインターセプターの内部:
foreach (ParameterInfo param in invocation.Method.GetParameters ())
{
var atts = CustomAttributeData.GetCustomAttributes (param);
if (param.IsDefined (typeof(AuditParameterAttribute), false))
{
attributes.Add (param.Name, invocation.Arguments[param.Position].ToString ());
}
}
私は何かを機能させるためにいくつかの追加の呼び出しを追加し始めました。余分なものがそこにあるのはなぜですかvar atts
。変数には呼び出されたメソッドに関する情報があり、そこinvocation
からパラメーターを表すParameterInfoオブジェクトを取得できます。しかし、何を試しても、カスタム属性を取得することはできません。
私はここで何が間違っているのですか?