【发布时间】:2011-03-26 21:41:01
【问题描述】:
我的程序集中有许多入口点,我希望在从该程序集中运行任何其他代码之前,对每个 AppDomain 执行一次初始化代码。最好的方法是什么?
我看到的一个解决方案是拥有一个带有静态构造函数的类并继承我拥有的每个入口点。像这样的:
public class Initializer
{
static Initializer()
{
EnsureInitialized(); // Calls initialization code once and only once
}
}
public class EntryPointOne : Initializer, IEntryPoint
{
// Some code here
}
public class EntryPointTwo : Initializer, IEntryPoint
{
// Some code here
}
// etc.
这让我避免在每个入口点编写样板静态构造函数,但如果没有多重继承,这并不总是可能的。你能想到其他更好的选择吗?
【问题讨论】:
-
请说明您是要执行代码“每个程序集一次”还是“每个 AppDomain 一次”。请记住,AppDomain 中可以有许多程序集,并且根据程序集的不同,它甚至可以在程序集之间共享(仅加载一次)。
标签: c# static assemblies initialization