没有理由需要System.Xml

本文关键字:System Xml 有理由 | 更新日期: 2023-09-27 18:02:44

protected override DataTable internalExecuteTable(string SQL)
{
    DbDataReader reader = ExecuteReader(SQL);
    DataTable dt = new DataTable();
    dt.Load(reader);
    reader.Close();
    return dt;
}

"internalExecuteTable"被加了下划线,并抛出一个错误,认为"System.Xml"没有被引用,我应该添加"System.Xml"引用。但是为什么呢?

我使用上面的代码从SQLite数据库(System.Data. data)读取数据。SQLite包装)

没有理由需要System.Xml

您正在间接使用System.XmlDataTable依赖于System.Xml程序集中定义的类。如果您查看该类的文档,或者只是在IDE中探索该类,就会注意到它包含许多用于读取和编写XML的方法,例如:

通过使用System.Data.DataTable,您还需要引用System.Xml

DataTable根据MSDN声明为

[SerializableAttribute]
public class DataTable 
     : MarshalByValueComponent,
       IListSource,
       ISupportInitializeNotification,
       ISupportInitialize,
       ISerializable,
       IXmlSerializable

IXmlSerializable声明了使用XmlReaderXmlWriterXmlSchema作为输入或输出的方法,它们分别在System.Xml.dll中定义。

如果你深入研究代码(使用官方源代码或IL/反编译器),你可能会注意到一个属性的使用:

[XmlSchemaProvider("GetDataTableSchema")]
//...
public class DataTable : //...

不幸的是,MSDN的家伙没有在备注部分明确地包括System.Xml的参考-可能是因为通常的项目模板无论如何都包含它。