我有一个曾经是控制台程序的DLL,它仍然有代码使用“static Main(string [] args)”有没有办法在加载DLL时传递args?
我正在使用
Assembly assembly = Assembly.LoadFrom("App.dll");
Type type = assembly.GetType("App.LoadFile");
var instance = Activator.CreateInstance(type,new string[] { filepath });
答案 0 :(得分:2)
仅在第二个程序中加载程序集时不会调用Main
方法。您只需要在上面的Main
上调用type
方法。
以下是如何从代码中调用静态Main
方法...
var assembly = Assembly.LoadFrom("App.dll");
var type = assembly.GetType("App.LoadFile");
var args = new string[] { filepath };
var main = type.GetMethod("Main",
System.Reflection.BindingFlags.Static
| System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.InvokeMethod
);
main.Invoke(null, new object[] { args });