XsltArgumentList没有count()方法。有什么办法做到这一点?
而且,它似乎不支持foreach构造枚举。
另外,在Visual Studio 2010 Xslt调试器中,如何使用xslt参数?
最佳答案
您可以使用反射来访问存储此数据的私有字段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,并负责使两者保持同步。
关于c# - .NET XsltArgumentList-以任何方式计数/枚举参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4939492/