XsltArgumentList没有count()方法。有没有办法解决这个问题?
此外,它似乎不支持foreach构造枚举。
另外,在Visual Studio 2010 Xslt调试器中,如何使用xslt参数?
答案 0 :(得分: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);
}
另一种方法是创建一个包装类。该类将包含Add和Remove方法,并公开参数集合和XsltArgumentList,并负责保持两者同步。
答案 1 :(得分:0)
你到底想要做什么?我们可以获得更多信息吗?通常您知道传递到XSLT所需的参数并从那里生成参数列表。你通常不会收到需要循环的参数列表。