public void Launch()
{
if (LinkedInstance != null) return;
LinkedInstance = new OrderInstance(ServiceLocation, Algorithm, MaxPrice, Limit, PoolData, ID, StartingPrice, StartingAmount);
if (HandlerDLL.Length > 0)
{
try
{
Assembly ASS = Assembly.LoadFrom(HandlerDLL);
Type T = ASS.GetType("HandlerClass");
HandlerMethod = T.GetMethod("HandleOrder");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
此代码将根据文件名打开一个程序集,并将HandlerMethod与T.GetMethod一起分配。
问题是我不想创建一个dll文件。
我想在解决方案中使用项目文件执行此操作。
HandlerMethod的类型是这个
private MethodInfo HandlerMethod;
那么如何指定HandlerMethod指向我所拥有的类中的方法。
恰好,样本处理程序的程序集名称是Handler Example
所以我尝试将代码更改为
Assembly ASS = Assembly.LoadFrom("HandlerExample");
Type T = ASS.GetType("HandlerClass");
HandlerMethod = T.GetMethod("HandleOrder");
它只会引起异常。
如何安排ASS将引用解决方案中另一个项目中的dll文件。我想要最少的代码更改。
答案 0 :(得分:1)
如果该方法存在于某个其他项目中,那么您可以添加对该项目的引用并直接使用该方法,或者如果您想使用反射,那么Assembly ASS = Assembly.LoadFrom(HandlerDLL);
将完成您已经完成的工作使用
如果该类位于同一个项目中,那么您可以使用Assembly ASS = Assembly.GetExecutingAssembly();
,在这种情况下,您不需要提供dll名称。
注意:虽然OP没有提到他正在使用的语言,但代码看起来像c#。