Статический конструктор для всей сборки

У меня много точек входа в мою сборку, и я хочу, чтобы некоторый код инициализации выполнялся один раз для каждого 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.

Это позволяет мне избегать написания статических конструкторов котельной пластины в каждой точке входа, но без множественного наследования это не всегда возможно. Можете ли вы придумать какие-либо другие более подходящие варианты?

11
задан starblue 9 August 2010 в 09:32
поделиться