gpt4 book ai didi

silverlight - 通过反射获取 mscorlib 2.0.5.0(又名 Silverlight mscorlib)中的类型?

转载 作者:行者123 更新时间:2023-12-04 03:11:49 37 4
gpt4 key购买 nike

我正在尝试将 Silverlight 支持添加到我最喜欢的编程语言 Nemerle。

Nemerle ,在编译过程中,主要分两步通过反射加载所有类型

1-) 使用 Assembly.LoadFrom 加载程序集
2-) 使用 Assembly.GetTypes() 获取类型

然后在编译结束时,它使用 Reflection.Emit 发出解析后的类型。

此过程适用于所有程序集,包括 Silverlight 程序集,但 Silverlight 的 mscorlib 除外。

在 C# 中,这失败了:

 var a = System.Reflection.Assembly.LoadFrom(@"c:\mscorlib.dll");

但这通过了:
var a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(@"c:\mscorlib.dll"); 

在后者中, a.GetTypes() 抛出异常,说 System.Object 的父级不存在。

有出路吗 ?

最佳答案

假设您试图从标准 CLR 反射(reflect) Silverlight 的 mscorlib,这将不起作用,因为 CLR 不允许加载多个版本的 mscorlib。 (也许这是因为它可能会破坏其核心类型的分辨率)。

一种解决方法是使用 Mono.Cecil 检查类型:
http://mono-project.com/Cecil .这个库实际上比 .NET 的 Reflection 执行得更好,并且应该更强大。

下面是一些帮助您入门的代码:

AssemblyDefinition asm = AssemblyFactory.GetAssembly(@"C:\mscorlib.dll");

var types =
from ModuleDefinition m in asm.Modules
from TypeDefinition t in m.Types
select t.Name;

关于silverlight - 通过反射获取 mscorlib 2.0.5.0(又名 Silverlight mscorlib)中的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754983/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com