我拿a Type,查询其装配位置,然后从同一地址加载程序集,并从加载的程序集中找到相同的类型.结果类型不等于原始类型.
这是测试用例:
[TestMethod]
public void TestTypeLoadingWithFilePath()
{
var originalType = typeof(SomeClass);
var assemblyAddress = originalType.Assembly.Location;
var loadedAssembly = Assembly.LoadFile(assemblyAddress);
Assert.IsNotNull(loadedAssembly);
var loadedType = loadedAssembly.GetType(originalType.FullName);
Assert.IsNotNull(loadedType);
Assert.AreEqual(originalType, loadedType);
}
Run Code Online (Sandbox Code Playgroud)
最后一个断言测试失败.
这仅发生在Windows上的.NET Core上.(我正在测试最新版本,2.1.4).但.NET Framework不是这种情况.
我的问题是:
这是正常的行为。使用Assembly.LoadFile将加载程序集并创建它的新“实例”。要解决此问题,只需Assembly.LoadFrom改用即可。如果请求的程序集已经加载,这将首先查看当前上下文,如果已加载,则采用此上下文。比较像您正在做的类型将起作用。
编辑:我不知道它是否有意,但此方法适用于 .NetFramework 和 .NetCore。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |