Можете ли вы вызвать метод интерфейса, не создавая экземпляр? Нет. Интерфейсы являются, например, членами; статические члены класса не связаны с интерфейсами.
Вы можете получить то, что хотите, предоставив статическую реализацию интерфейса,
public class MyImplementation : IMyInterface
{
public static readonly Instance = new MyImplementation();
private MyImplementation() { }
}
// ...then your code might look like:
MethodInfo method = typeof(IMyInterface).GetMethod("ShutDown");
method.Invoke(MyImplementation.Instance, new object[] { 4 })
Или вы можете сделать метод расширения:
public static class MyExtensions
{
public static void ShutDown(this IMyInterface obj, ...) { ... }
}
// ...then your code might look like:
object x = null;
MethodInfo method = typeof(MyExtensions).GetMethod("ShutDown");
method.Invoke(x as IMyInterface, new object[] { 4 });