C# Activator.CreateInstance,:类型为'的构造函数;粉彩、进化、采购订单';找不到

C# Activator.CreateInstance,:类型为'的构造函数;粉彩、进化、采购订单';找不到,c#,dll,reflection,C#,Dll,Reflection,现在,我已经到了尝试在已加载的程序集中创建类实例的地步 object obj= Activator.CreateInstance(purchaseOrder, BindingFlags.NonPublic | BindingFlags.Instance, n

现在,我已经到了尝试在已加载的程序集中创建类实例的地步

 object obj= Activator.CreateInstance(purchaseOrder,
                                        BindingFlags.NonPublic |
                                        BindingFlags.Instance,
                                        null, new object[] { purchaseOrderDocumentBase }, null);
我不断得到错误:

“System.MissingMethodException”类型的未处理异常 在mscorlib.dll中发生其他信息:类型上的构造函数 未找到“Pastel.Evolution.PurchaseOrder”

我已经读到:

大多数人都认为施工人员是私人的。我正在加载的类型有4个构造函数都是公共的。有些人提到没有默认构造函数的类型,我认为这是问题所在

我尝试调用第一个没有参数的构造函数:

constractor.Invoke(purchaseOrder, null);
然后我得到以下错误

“System.Reflection.TargetException”类型的未处理异常 在mscorlib.dll中发生其他信息:对象不匹配 目标类型

有人能解释一下吗


提前感谢。

您似乎合并了多个项目,第二个项目的源代码与dll不匹配。通常,当第二个项目发生更改,但dll没有更新时,就会发生这种情况。检查两个项目是否都设置为“发布/调试”。我通常将项目设置为调试模式。然后确保第二个项目的参考设置为debug文件夹而不是release文件夹。我尝试实现的完整背景如下:我们正在使用WCF服务集成到外部程序。然后,我们在不同版本的外部程序上拥有不同的客户。我有6个版本的外部创建的dll,我没有访问dll的代码。我试图做的是加载客户需要的特定程序集,然后在dll中创建类的实例,然后从那里我应该可以访问dll中的方法。简而言之,我想使我的集成服务向后兼容。使用解决方案资源管理器可以查看dll中的函数。如果您能确保函数的参数与调用方法的代码匹配,我可以看到类中的所有类和方法。问题是,我无法创建该类的实例。如果该类是静态的,则无法创建实例。如果不是静态的,您应该能够转到解决方案资源管理器,并在引用对象中找到您的库/类。找到类的构造函数并查看所需的参数。您没有使用正确的参数调用构造函数。您似乎合并了多个项目,并且第二个项目的源代码与dll不匹配。通常,当第二个项目发生更改,但dll没有更新时,就会发生这种情况。检查两个项目是否都设置为“发布/调试”。我通常将项目设置为调试模式。然后确保第二个项目的参考设置为debug文件夹而不是release文件夹。我尝试实现的完整背景如下:我们正在使用WCF服务集成到外部程序。然后,我们在不同版本的外部程序上拥有不同的客户。我有6个版本的外部创建的dll,我没有访问dll的代码。我试图做的是加载客户需要的特定程序集,然后在dll中创建类的实例,然后从那里我应该可以访问dll中的方法。简而言之,我想使我的集成服务向后兼容。使用解决方案资源管理器可以查看dll中的函数。如果您能确保函数的参数与调用方法的代码匹配,我可以看到类中的所有类和方法。问题是,我无法创建该类的实例。如果该类是静态的,则无法创建实例。如果不是静态的,您应该能够转到解决方案资源管理器,并在引用对象中找到您的库/类。找到类的构造函数并查看所需的参数。您没有使用正确的参数调用构造函数。