Activator.CreateInstance拾取旧的引用的dll。无法正常工作

问题描述 投票:0回答:1

我正在尝试使用Activator.CreateInstance(type.Assembly.FullName,type.FullName)从DemoClass.dll实例化一个类

此类从其他dll实现一个接口。可以说DemoInterfaces.dll。早先应该实现两种方法。但是现在我们只有一种方法,即一种方法被删除了。但是,在实例化时,它正在尝试引用旧副本,而我在任何地方都看不到。这是新的dll,并在dotpeek中对其进行了检查。 DemoInterfaces.dll接口只有一种方法。

下面是示例代码。

Assembly assembly = Assembly.LoadFrom(path);
Type type = assembly.GetType("className", true, true);
var xxx = Activator.CreateInstance(type.Assembly.FullName, type.FullName);

但是,它正在寻找第二种方法的实现。因此未找到DemoClass.dll中类的方法实现。

{“调用目标已引发异常。”}数据:{System.Collections.ListDictionaryInternal}H结果:-2146232828帮助链接:nullInnerException:{“找不到方法:“ xxxx”}}消息:“调用目标已引发异常。”资料来源:“ mscorlib”StackTrace:“位于System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck)\ r \ n,位于System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawl )\ r \ n在System.Runator.CreateInstance(类型类型,布尔非公共)\ r \ n在System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark&stackMark)\ r \ n CreateInstanceImpl(BindingFlags bindingAttr,活页夹活页夹,Object [] args,CultureInfo文化,Object [] activationAttributes,StackCrawlMark&stackMark)\ r \ n在System.Activator.CreateInstance(Type type,BindingFlags bindingAttr,活页夹活页夹,Object [] args,CultureInfo区域性,System.Activator.CreateInstance上的Object [] activationAttributes)\ r \ n(String assemblyString,String typeName,Boolean ignoreCase,Binding标记bindingAttr,Binder活页夹,Object []参数,CultureInfo文化,Object [] ActivationAttributes,证据securityInfo,StackCrawlMark&stackMark)\ r \ n在System.Activator.CreateInstance(String assemblyName,String typeName)\ r \ n在xx中的xxxx“TargetSite:{System.Object CreateInstance(System.RuntimeType,Boolean,Boolean,Boolean ByRef,System.RuntimeMethodHandleInternal ByRef,Boolean ByRef)}

非常感谢您的帮助。

c# .net reflection .net-assembly
1个回答
0
投票

仅尝试传递Type

Assembly assembly = Assembly.LoadFrom(path);
Type type = assembly.GetType("Namespace.className");
object instance = Activator.CreateInstance(type);
© www.soinside.com 2019 - 2024. All rights reserved.