如何修改此代码以使用解决方案中的其他项目

时间:2017-07-11 15:32:37

标签: dll

        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文件。我想要最少的代码更改。

1 个答案:

答案 0 :(得分:1)

如果该方法存在于某个其他项目中,那么您可以添加对该项目的引用并直接使用该方法,或者如果您想使用反射,那么Assembly ASS = Assembly.LoadFrom(HandlerDLL);将完成您已经完成的工作使用

如果该类位于同一个项目中,那么您可以使用Assembly ASS = Assembly.GetExecutingAssembly();,在这种情况下,您不需要提供dll名称。

注意:虽然OP没有提到他正在使用的语言,但代码看起来像c#。