|
1
51
答案是肯定的,但解决方案有点棘手。
这个
这个
不幸的是,要实现这一点有几个棘手的问题。第一个问题是确保在编译代码运行之前始终安装事件处理程序。使用控制台应用程序,这很容易。连接事件处理程序的代码可以添加到
第二个问题是确保在使用任何引用它们的代码之前,所有引用的类型都被插入到动态程序集中。这个
幸运的是,CLR为这两个问题提供了一个解决方案:模块初始化器。模块初始化器相当于“静态类构造函数”,除了它初始化整个模块,而不仅仅是一个类。Baiscaly,CLR将:
它对所有程序集都这样做,包括类库和可执行文件,对于EXE,它将在执行Main方法之前运行模块构造函数。 看这个 blog post 有关构造函数的更多信息。 无论如何,我的问题的完整解决方案需要几个部分:
因此,无论如何,这是我能够提出的机制,可以在CLR中实现大致相当于自定义类加载器的功能。 有人知道一种更简单的方法吗? |
|
|
2
-5
我认为这就是DLR在C#4.0中应该提供的东西。目前还很难获得信息,但也许我们会在PDC08中学到更多。急切地等待着你的C#3解决方案。..我猜它使用匿名类型。 |
|
|
Nicola · C++CLI项目中非托管数据上的C#指针 8 年前 |
|
|
Anton Savelyev · 在发布版本中删除类指针会导致内存问题 8 年前 |
|
|
shmnff · 显式转换int到SqlInt32 8 年前 |
|
|
Alex12 · windows窗体中的C++if语句[关闭] 9 年前 |
|
|
Claude Tan · 类型定义和类型引用之间有什么区别? 9 年前 |