2011-02-08 8 views
2

XsltArgumentListにはcount()メソッドがありません。それを得る方法はありますか?.NET XsltArgumentList - パラメータを数えたり列挙する方法はありますか?

また、列挙するforeach構造をサポートしていないようです。

また、Visual Studio 2010 Xsltデバッガで、xslt引数の使用方法は?

+0

あなたがしようとしていることは明確ではありません。 **あなたが渡すパラメータ**を知っている必要があります**!特定のスタイルシートが予期しているパラメータを知りたければ、この質問を言い換えるべきです。 –

答えて

0

あなたは正確に何をしようとしていますか?もっと情報を得ることはできますか?通常は、XSLTに渡してそこから引数リストを生成するために必要なパラメータを知っています。通常、ループする必要がある引数リストは表示されません。

3

リフレクションを使用して、このデータを格納するプライベートフィールドparametersにアクセスできます。これは、文書化されていない実装の詳細に依存することを意味し、いつでも破損する可能性があります。

デバッグの目的のためだけに、私は大丈夫だと思います。ウォッチウィンドウから利用可能であり、直接ウィンドウに?xslArg.parametersと入力してください。

XsltArgumentList xslArg = new XsltArgumentList(); 

string name = "John"; 
xslArg.AddParam("name", "", name); 

DateTime d = DateTime.Now; 
xslArg.AddParam("date", "", d.ToString()); 

FieldInfo fi = xslArg.GetType().GetField("parameters", BindingFlags.NonPublic | 
                 BindingFlags.Instance); 

System.Collections.Hashtable parameters = fi.GetValue(xslArg) as System.Collections.Hashtable; 

if (parameters != null) 
{ 
    foreach (System.Collections.DictionaryEntry item in parameters) 
     Console.WriteLine("{0} | {1}", item.Key, item.Value); 
} 

もう1つの方法は、ラッパークラスを作成することです。このクラスにはAddメソッドとRemoveメソッドが含まれ、パラメータコレクションとXsltArgumentListが公開され、2つを同期させる責任があります。

+0

パーフェクト。ありがとう! – writedn

関連する問題