我有一个.net库dll,就像一个函数库.有许多静态类型和静态方法.
我需要运行一些初始化代码来设置库以供使用.
当程序集加载时,是否有办法确保运行特定方法?像AppDomain.AssemblyLoad之类的东西,但是从程序集本身自动调用.我在想,也许有可能会使用像AssemblyAttribute这样的东西?
目前我在静态构造函数中有这个初始化代码,但由于这是一个包含许多入口点的库,因此无法保证将使用此特定类型.
谢谢!
模块初始值设定项是CLR的一项功能,无法在C#或VB.NET中直接使用.它们是名为的全局静态方法.cctor,保证在执行程序集中的任何其他代码(类型初始化程序,静态构造函数)之前运行.我最近想在一个项目中使用它并使用Mono.Cecil 将我自己的解决方案(控制台程序/ msbuild任务)一起攻击,但我想知道:
有没有办法欺骗C#编译器发射模块初始化器?任何属性(例如CompilerGenerated,SpecialName)或其他可以使用的技巧?
C#/ VB.NET是否会出于某种目的自己发出这些初始化器?从我所看到的它们被托管C++用于某些互操作目的,但我找不到任何引用它们用于其他目的.有任何想法吗?