C# 从XmlTextReader检索流文件名

C# 从XmlTextReader检索流文件名,c#,.net,.net-4.0,xmltextreader,C#,.net,.net 4.0,Xmltextreader,这有点琐碎,但现在开始。我正在使用.Net 4.0 framework将XmlTextReader对象传递给一个方法 public void TestMethod(XmlTextReader reader) { try { //... //Logic //... } catch(Exception ex) { //I also want to log the file location of

这有点琐碎,但现在开始。我正在使用.Net 4.0 framework将XmlTextReader对象传递给一个方法

public void TestMethod(XmlTextReader reader)
{
    try
    {
        //...
        //Logic
        //...
    }
    catch(Exception ex)
    {
        //I also want to log the file location of the XmlTextReader!
        Log(ex.Message);
    }
}
如果读卡器出现问题,我希望记录XmlTextReader读取文件的位置。有没有简单的方法返回XmlTextReader正在使用的流?它有点微不足道的原因是,我可以很容易地向包含用于创建流的文件位置的方法传递额外的字符串,但这似乎只是一种只使用XmlTextReader的方法

谢谢

更新,这就是我正在做的。。。对不起,这是一个糟糕的例子:

public void TestMethod(XmlTextReader reader)
{
        //...
        //Logic
        //...

    if(something_inside_the_XML)
    throw new Exception(FileLocation);
}
也许你可以用

XmlTextReader.LineNumber
XmlTextReader.LinePosition

XmlTextReader是一次性对象,为什么不更改方法签名,使其接受文件路径,然后您可以通过XmlTextReader对其进行流式读取。这将使您能够在出现任何错误时干净地处理读卡器,并同时将其记录下来

try
{
   using(var reader = new XmlTextReader(filepath) 
   {

   }
}
catch(Exception e)
{
  //Log here
}
这个怎么样

reader.BaseUri
这将返回创建XmlTextReader时使用的原始Uri 反对

作为缔约国:

基本URI告诉您这些节点来自何处。如果返回的节点没有基本URI(例如,它们是从内存中的字符串解析的),则返回string.Empty


您应该使用
XmlReader
而不是
XmlTextReader
。使用
XmlReader.Create()
创建一个。