Has*_*niH 4 c# assemblies appdomain .net-3.5
我有一个应用程序,它加载程序集并查找类型,这些类型是应用程序引用的另一个程序集A1中定义的类C1的子类.我在A1中定义了一个类型T,它是C1的子类,但是当我使用Assembly.Load(...)加载A1时,在TI实例上调用t.IsSubclassOf(typeof(C1))得到false.我注意到当前appdomain中有2个程序集A1的实例,如果我从其中一个实例中获取C1类型而不是两个实例,则t.IsSubclassOf(C1)可以工作.我不太明白这种行为,任何人都可以解释一下吗?此外,我如何修复我的应用程序,以便无论是加载A1还是其他程序集来查找C1的子类型?
为了使CLR唯一地标识类型,它在类型标识符中包括汇编信息.您的问题是CLR将A1的两个实例分类为不同的程序集,因此您正在有效地执行:
A1::T1.IsSubClassOf(A1Copy::C1) // No relationship between A1 and A1Copy
Run Code Online (Sandbox Code Playgroud)
... 代替:
A1::T1.IsSubClassOf(A1::C1)
Run Code Online (Sandbox Code Playgroud)
程序集由其名称,版本,区域性和公钥唯一标识.请检查Assembly.GetName()app-domain中两个程序集实例的这些值(via ); 我怀疑其中一个属性不匹配,导致CLR加载违规组件.
| 归档时间: |
|
| 查看次数: |
3305 次 |
| 最近记录: |