我有一个来自System.Xml命名空间的XmlTextReaders列表,如此
List<XmlTextReader> test = new List<XmlTextReader>{};
然后添加元素就像这样
IEnumerable<string> Files = Directory.GetFiles(ConfigurationManager.AppSettings.Get("TestDirectory"));
if (Files.Count() == 0) //the check for existance and the catch aren't included in this snippet
throw new DirectoryNotFoundException("The directory exists, however it is empty.");
foreach(var file in Files)
{
test.Add(new XmlTextReader(file));
}
一旦我将此列表传递给另一个类,我有办法检索文件名/路径吗?
我已经搜索了MSDN类信息,据我所知,没有任何类型,但我希望我错过了它。
如果不可能,我将传递文件而不是XmlTextReaders,以便维护路径并稍后将它们打开。但我希望有一个XmlTextReader的属性/方法,我只是误解,它会给我文件名或路径(我甚至不需要整个路径,只需要名称。)
答案 0 :(得分:1)
你不能直接。
XmlTextReader
类甚至不存储URL本身。它实例化一个名为XmlTextREaderImpl
的内部类,它确实存储了URL,但它没有通过任何属性公开,甚至impl类本身也没有公开。
但是,您可以创建自己的包装器。创建一个扩展XmlTextReader
的新类,接受url作为其构造函数参数,存储它,将其公开为属性,并将其他所有内容委托给内部XmlTextReader
。
如果你有ReSharper,使用ReSharper&#34;生成委派会员&#34;更容易编写这样的课程。特征
答案 1 :(得分:1)
使用与您所拥有的代码类似的另一种解决方案:
Dictionary<XmlTextReader, string> test = new Dictionary<XmlTextReader, string>{};
然后添加元素就像这样
IEnumerable<string> Files = Directory.GetFiles(ConfigurationManager.AppSettings.Get("TestDirectory"));
if (Files.Count() == 0) //the check for existence and the catch aren't included in this snippet
throw new DirectoryNotFoundException("The directory exists, however it is empty.");
foreach(var file in Files)
{
test.Add(new XmlTextReader(file), file);
}
然后,您可以迭代test
Dictionary
或通过XmlTextReader
键找到文件名。