4
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ラッパー)から読み取ります

4

2 に答える 2

10

System.Xml間接的に使用しています。は、アセンブリDataTableで定義されたクラスに依存します。System.Xmlクラスのドキュメントを見る場合、またはIDEで単にそれを調べる場合、たとえば、XMLを読み書きするための多くのメソッドが含まれていることに気付くでしょう。

を使用してSystem.Data.DataTable、も参照する必要がありますSystem.Xml

于 2013-03-07T19:21:07.460 に答える
0

DataTableは、MSDNによると次のように宣言されています

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

IXmlSerializableを使用するメソッドを宣言し、XmlReader入力または出力のいずれかに対して、System.Xml.dllでそれぞれ定義されたすべてのメソッドを宣言します。XmlWriterXmlSchema

(公式ソースまたはIL / Decompilerを使用して)コードに飛び込むと、属性の使用法に気付く場合があります。

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

残念ながら、MSDNの担当者は、コメントセクションにその参照を明示的に含めていませんでしたSystem.Xml。おそらく、通常のプロジェクトテンプレートにその参照が含まれているためです。

于 2013-06-05T12:14:36.737 に答える