Вы можете использовать отражение, чтобы попасть в приватное поле 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 и отвечает за синхронизацию этих двух параметров.