Вставьте ваши методы, как делегаты в словарь
public enum MethodType
{
None,
Show,
Hide,
Validate
}
var methods = new Dictionary<MethodType, Action<Panel, String, List<EventActions>>();
methods.Add(MethodType.Show, show);
methods.Add(MethodType.Hide, hide);
methods.Add(MethodType.Validate, validate);
Затем вы можете вызвать один из них с
MethodType methodToInvoke = MethodType.Hide;
methods[methodToInvoke](paneldynamic, id, eventList);
Если вы собираетесь динамически загрузить DLL, это другая история , Вам понадобятся как минимум три сборки (три проекта): одна главная сборка (exe), одна контрактная сборка (dll) и одна сборка (dll). Основной и подключаемый модуль должны ссылаться на контрактную сборку. Сборку договор содержит интерфейс
public interface IPlugIn
{
void Show(Panel paneldynamic, String id, List<EventActions> eventList);
void Hide(Panel paneldynamic, String id, List<EventActions> eventList);
void Validate(Panel paneldynamic, String id, List<EventActions> eventList);
}
разъем.подкл содержит класс, реализующий интерфейс
public class PlugIn : IPlugIn
{
// TODO: implement IPlugIn
}
В основном узле вы можете загрузить плагин, как это
IPlugIn LoadPlugInFromFile(string fileName)
{
Assembly asm = Assembly.LoadFrom(fileName);
Type type = asm.GetType("PlugIn");
IPlugIn plugIn = (IPlugIn)Activator.CreateInstance(type);
return plugIn;
}
Вызывайте так:
IPlugIn plugIn = LoadPlugInFromFile("C:\PlugIns\MyPlugIn.dll");
plugIn.Show(paneldynamic, id, eventList);