我想System.Data.SQLite
在 C# 中实现一个函数。实现SQLiteFunction
接口很容易(参见 Internet 上的示例)。
问题是我应该把编译后的代码放在哪里?我是否需要将源代码与项目一起编译System.Data.SQLite
?我是否有更好的选择,以便我的函数将驻留在单独的 DLL 中?
澄清:该函数应该不仅对我的 C# 代码而且对sqlite3
客户端(例如)都是已知的,因此我将能够在执行以纯文本形式出现的 INSERT 命令时使用它。
我想System.Data.SQLite
在 C# 中实现一个函数。实现SQLiteFunction
接口很容易(参见 Internet 上的示例)。
问题是我应该把编译后的代码放在哪里?我是否需要将源代码与项目一起编译System.Data.SQLite
?我是否有更好的选择,以便我的函数将驻留在单独的 DLL 中?
澄清:该函数应该不仅对我的 C# 代码而且对sqlite3
客户端(例如)都是已知的,因此我将能够在执行以纯文本形式出现的 INSERT 命令时使用它。
SQLite查看应用程序的所有程序集并识别具有该[SQLiteFunction]
属性的类型。因此,您可以将它们放在您喜欢的任何位置,只要在您进行第一次 SQLite 调用时已经加载了该程序集。
如果只是一两个函数,我倾向于将它们放在应用程序的现有程序集中之一中。
有一个静态方法SQLiteFunction.RegisterFunction
,但文档说它是......
...目前不支持枚举程序集的 Compact Framework 的解决方法。
此外,从我可以根据文档得知SQLiteFunctionAttribute
:
一个简单的自定义属性,使我们能够轻松地在加载的程序集中找到用户定义的函数,并在建立连接时在 SQLite 中初始化它们。
和
使用反射,枚举当前 appdomain 中的所有程序集,查找具有 SQLiteFunctionAttribute 属性的类,并相应地注册它们。
所有用户定义的函数都是从所有加载的程序集中自动加载的。