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/

10-12 06:19