System.Xml无需理由

时间:2013-03-07 19:13:28

标签: c# .net

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.SQLite包装器)中读取

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:0)

DataTable according to MSDN声明为

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

IXmlSerializable声明使用XmlReaderXmlWriterXmlSchema进行输入或输出的方法,所有这些方法都在System.Xml.dll中分别声明。< / p>

如果您深入了解代码(使用官方来源或IL / Decompiler),您可能会注意到属性用法:

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

不幸的是,MSDN的人并没有在备注部分明确地包含对System.Xml的引用 - 也许是因为通常的项目模板仍包含它。