拡張キー
ほとんどの種類のメッセージでは、ユーザー定義データ(キーと値のペアの形式)を収集し、メッセージと一緒に送信することができます。
差し込まれたコードは、アプリケーション ソースおよび/またはアノテーションが付けられたメソッドの引数から、拡張キーを取得できます。
拡張キーの設定はどんな場合でも省略可能です。 省略すると、生成されるメッセージに拡張キー情報は含まれなくなります。
ソースから取得された拡張キーの送信
送信したいメッセージに対応する属性の ExtendedKeySource で、IDictionary<string,string>
(または IDictionary
)ソースを構成します。
差し込まれたコードは、実行時にこのソースからキーと値のペアを取得し、拡張キーに追加します。アノテーションが付けられたメソッドが実行された時点で、この辞書(IDictionary)にデータが設定されており、ソースから入手できるようにしておく必要があります。
Feature 属性の ExtendedKeySource を、GetDictionary
というメソッドとして定義する場合の使用例を示します。
[Feature(
..."Click"
ExtendedKeySourceElement = SourceElements.Method,
ExtendedKeySourceName = "GetDictionary",
)]
private void button1_Click(object sender, EventArgs e) {
...
}
// 辞書を作成して、カスタム データを設定します
public IDictionary<string, string> GetDictionary() {
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("key1", "val1");
dict.Add("key2", "val2");
return dict;
}
メソッド引数を拡張キーとして自動的に送信する
ソースから提供される拡張キーに加え、インストルメント化されたメソッドのパラメーター名と値を自動的に収集し、拡張キーのセットに追加することもできます。
拡張キーをサポートする属性には、ExtendedKeyMethodArguments プロパティがあります。 これらのメソッド引数を拡張キーに追加するには、パラメーターと値を送信したいメソッドを修飾する属性にある、このプロパティを指定します。
ExtendedKeyMethodArguments プロパティは、メッセージに含めるパラメーターを定義する文字列により構成されます。文字列には任意で、報告されるキーのメッセージ データ内での名前も定義します。
ExtendedKeyMethodArguments の値は以下のパターンの組み合わせで構成されます。
* | すべてのパラメーター |
---|---|
<param1>,<param2> | param1 および param2 の名前と値のみ |
<param1>=<key1>,<param2>=<key2> | キー名がそれぞれ key1 と key2 の、param1 および param2 の値のみ |