Создание Instance класса в Global.asax. Не опасно?

Есть библиотека классов FilterPlugin.
Все классы реализуют определенный интерфейс.
В Global.asax, я решил собрать все Instance этих классов в глобальную переменную для дальнейшего использования.
Вот функция записи Instance в global.asax:
private void FilterPluginConfig()
        {
            string[] addInAssemblies = Directory.GetFiles(HttpContext.Current.Server.MapPath("~/bin"), "FilterPlugin.dll");
            foreach (var file in addInAssemblies)
            {
                Assembly addInAssembly = Assembly.LoadFrom(file);
                foreach (var t in addInAssembly.GetExportedTypes())
                {
                    if (t.IsClass && typeof(IFilterPlugin).IsAssignableFrom(t))
                    {
                        GeneralSettings.FilterPluginsInstances.Add((IFilterPlugin)Activator.CreateInstance(t));
                    }
                }
            }
        }

Далее уже в коде самого ASP.NET приложения выполняются определенные функции этих классов.
Примерно так:
foreach (var filter in GeneralSettings.FilterPluginsInstances)
{
filter.GiveResult();
}

Этот код прекрасно работает. Но у меня есть сомнения, что такое допустимо в принципе.
Какое ваше мнение?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Изложите свои сомнения. Я лично не вижу криминала, разве что произойдет сбой при загрузке, или кто то заменит FilterPlugin.dll
Ответ написан
yarosroman
@yarosroman
C# the best
Единственное, при модульном тестировании, возможно могут возникнуть проблемы, при инициализации вашего массива фильтров. Да и многие синглтон (а статический класс фактически синглтон) считают антипаттерном по этой причине, завязанность кода возрастает, а так в принципе нормальное решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы