我有一个C#库,它有System.Data.SQLite作为参考,以及一个使用库的可执行文件(作为第二个项目)。Visual Studio 2010中的引用转发(从库到可执行文件)
在图书馆里,我有它引用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的引用吗?
我会给+1,因为你是对的,但是包装第三方库有很多好处。如果你正在提供一个应用程序使用的库(尤其是面向外部的),那么你不希望用户关心库的实现细节。在这种情况下,最好将引用的库抽象出来并通过包装器控制对系统的访问。我同意,这并不总是必要的,但是当你想要这样做时,有确定的时间。 – 2012-04-24 21:57:00