Если вы хотите использовать Reflection, то недостающий фрагмент в вашем коде:
MethodInfo meth = plug.GetType().GetMethod("Execute");
meth.Invoke(plug, new object[] { });
Первый параметр метода Invoke
должен быть экземпляром, для которого вы хотите вызвать метод.Это необходимо, потому что meth
является просто абстрактным описанием метода (и не связано ни с одним экземпляром).Это полезно, если вы хотите вызывать метод в нескольких экземплярах (вы можете кэшировать значение meth
).
Если вы используете C # 4.0, тогда вы можете использовать новую функцию dynamic
(при условиичто «Выполнить» - это имя, которое не изменяется):
dynamic plugDynamic = plug;
plugDynamic.Execute( /* arguments */ );
Если переменная объявлена как dynamic
в C # 4.0, то вы можете вызывать любые методы, которые захотите, и разрешение метода будет выполнено.во время выполнения (аналогично Reflection, но немного сложнее и эффективнее).