Есть библиотека классов 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();
}
Этот код прекрасно работает. Но у меня есть сомнения, что такое допустимо в принципе.
Какое ваше мнение?