Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dll 如何修改此代码以在解决方案中使用另一个项目_Dll - Fatal编程技术网

Dll 如何修改此代码以在解决方案中使用另一个项目

Dll 如何修改此代码以在解决方案中使用另一个项目,dll,Dll,此代码将基于文件名打开程序集,并使用T.GetMethod分配HandlerMethod 问题是我不想创建一个dll文件 我想使用解决方案中的项目文件来执行此操作 HandlerMethod的类型如下 public void Launch() { if (LinkedInstance != null) return; LinkedInstance = new OrderInstance(ServiceLocation, Algorithm,

此代码将基于文件名打开程序集,并使用T.GetMethod分配HandlerMethod

问题是我不想创建一个dll文件

我想使用解决方案中的项目文件来执行此操作

HandlerMethod的类型如下

        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来指向我拥有的类中的一个方法呢

碰巧示例处理程序的程序集的名称是Handler Example

所以我试着把代码改成这个

    private MethodInfo HandlerMethod;
它只会导致异常


如何安排ASS引用解决方案中另一个项目中的dll文件。我希望代码更改最少。

如果该方法存在于其他项目中,则可以添加对该项目的引用并直接使用该方法,或者如果要使用反射,则Assembly ASS=Assembly.LoadFromHandlerDLL;将完成您已经使用的工作

如果类位于同一项目中,则可以使用Assembly ASS=Assembly.GetExecutionGassembly;在这种情况下,您不需要提供dll名称


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

为什么不添加对该项目的引用?我不想创建一个dll文件,因为如果另一个项目是类库,那么肯定会创建dll文件;我应该用什么填充handlerdll?该类位于assemblyHandlerDLL中的其他项目中。dll应该是包含dll文件完整路径的字符串。如果我不想使用dll文件,我想使用解决方案中的另一个项目,该如何直接使用该方法?您可以使用“添加引用”对话框在“项目”选项卡下添加对该项目的引用。然后,您可以创建类的实例并访问该方法,或者如果它是静态方法,则可以直接使用class.method。
                Assembly ASS = Assembly.LoadFrom("HandlerExample");
                Type T = ASS.GetType("HandlerClass");
                HandlerMethod = T.GetMethod("HandleOrder");