0

System.Data.SQLite を参照として持つ C# ライブラリと、ライブラリを使用する実行可能ファイル (2 番目のプロジェクトとして) があります。

ライブラリには、System.Data.SQLite のクラス (具体的にはSQLiteDataReaderクラス)を参照する関数があります。

public static IEnumerable<T> SQLiteFetch<T>(Func<SQLiteDataReader, T> formator, string connectionString, string query)

ライブラリは正しくコンパイルされますが、この関数を呼び出す実行可能ファイルはコンパイルされません。

これはビルド時にエラーとして表示され、「アセンブリ 'System.Data.SQLite' への参照を追加する必要があります」と表示されます。原因は IEnumerable だと思いますが、参照がライブラリ経由で転送されないのはなぜですか? 実行可能ファイルにも System.Data.SQLite への参照を追加する必要がありますか?

4

2 に答える 2

2

アセンブリは、その直接の参照 (ライブラリなど) のみを認識し、その参照の参照を再帰的にロードしないため、参照を実行可能ファイルに追加する必要があります。

ライブラリには、これを回避するために SQLiteDataReader から継承するラッパー クラスを含めることができますが、実行可能ファイルに余分な参照を持たせたくない場合を除いて、これを実行する利点は特にありません。

于 2012-04-24T21:31:41.127 に答える
1

はい、実行可能ファイルへの参照を追加する必要があります。これは、.NET を作成するときformatorに .NET がFunc<SQLiteDataReader, T>. また、実行可能ファイルには System.Data.SQLite への参照がないため、フォーマッターの処理方法がわかりません。これは、フォーマッターとして渡す場合でもnull当てはまります。

于 2012-04-24T21:23:36.073 に答える