zoukankan      html  css  js  c++  java
  • 关于AppDomain 创建实例进行程序集之间的通讯问题

            各位高手们,我在用AppDomain 的CreateInstanceFromAndUnwrap 创建一个实例进行程序之间的通讯时,会抛异常,提示"Constructor on type 'DllResource.DeriveClass' not found.",代码如下:

    private BaseClass GetTrigger(string FileName)//返回指定文件的TriggerDesignerFacade
            {
                try
                {
                    AppDomainSetup info = new AppDomainSetup();

                    info.ApplicationName = "Load";

                    AllTriggersDomain = AppDomain.CreateDomain(FileName, null, info);

                    Domains.Add(FileName, AllTriggersDomain);

                    object[] parms = { FileName };

                    BindingFlags bindings = BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.Public;

                    //创建实践实现程序集之间的通讯
                    var Trigger = (BaseClass)AllTriggersDomain.CreateInstanceFromAndUnwrap(FileName,
                                                                "DllResource.DeriveClass", true, bindings, null, parms, null, null, null);

                    //Assembly aDll = Trigger.GetLoadAssembly(FileName);

                    //var rc = (BaseClass)aDll.CreateInstance("DllResource.DeriveClass");

                    //rc.SetSettingFolder(System.IO.Path.GetDirectoryName(FileName));

                    //return rc;

                    return null;
                }
                catch
                {
                    return null;
                }
            }

    我想调用抽象类进行通讯,可是创建实例时失败,在这里BaseClass 是基类(抽象类) DeriveClass 是继承类;

    我把这行代码改成:

                    var Trigger = (BaseClass)AllTriggersDomain.CreateInstanceFromAndUnwrap(FileName,
                                                                "DllResource.BaseClass", true, bindings, null, parms, null, null, null);

    也是一样提示:"Constructor on type 'DllResource.BaseClass' not found."  

    下面是我的继承类和基类的代码:

    继承类:

    namespace DllResource
    {
        class DeriveClass : BaseClass
        {
            public DeriveClass ()   
            {

            }

            public override void Display()
            {
                throw new NotImplementedException();
            }
            public override int Counter(int num)
            {
                return num++;
            }
           
        }
    }

    基础类: 

    namespace DllResource
    {
        public abstract class BaseClass
        {
          
            public abstract void Display();

            public abstract int Counter(int num);
        }
    }

    不知道怎么解决,请各位高手指点,在线等...................

     

  • 相关阅读:
    js中的原生Ajax和JQuery中的Ajax
    this的用法
    static的特性
    时政20180807
    java compiler没有1.8怎么办
    Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
    分词器
    [数算]有一个工程甲、乙、丙单独做,分别要48天、72天、96天完成
    一点感想
    解析Excel文件 Apache POI框架使用
  • 原文地址:https://www.cnblogs.com/wangzhuangye/p/1338476.html
Copyright © 2011-2022 走看看