在Silverlight中,使用反射来迭代所有引用程序集中的类型

本文关键字:程序 引用 程序集 集中 类型 迭代 Silverlight 反射 | 更新日期: 2023-09-27 18:04:44

在silverlight中是否有相应的功能?

 var assemblies = AppDomain.CurrentDomain.GetAssemblies();

http://msdn.microsoft.com/en-us/library/system.appdomain.getassemblies (v = VS.95) . aspx

还有别的方法吗?

这里有一篇关于如何在混合下设计时这样做的文章…但是在运行时呢?

http://joshsmithonwpf.wordpress.com/2010/01/06/the-ultimate-hack-for-silverlight-in-blend/


看起来不太可能:

在Silverlight 3中获取运行时程序集

http://forums.silverlight.net/p/22050/77847.aspx

http://forums.silverlight.net/t/22050.aspx/1?Get + + + + +组件加载列表

在Silverlight中,使用反射来迭代所有引用程序集中的类型

我也没有让它在我的SL4项目中工作,但我试图将当前域转换为动态的,它可以工作,一个虚拟的解决方案,直到我让VS2010认识到我使用正确的mscorlib。

假处理:

var loadedAssemblies = ((dynamic)Thread.GetDomain()).GetAssemblies()as Assembly[]; 

这个问题最初要求的是相当于Silverlight中的Assembly.GetExecutingAssembly().GetAvailableTypes()的东西,所以这是我的第一个答案。

Silverlight支持反射

  • Assembly.GetExecutingAssembly()在Silverlight中支持,包括Windows Phone 7和XBox 360。
  • Assembly.GetExportedTypes()Assembly.GetTypes()在Silverlight中都支持,包括Windows 7和XBox 360。

查看文档并选择"Silverlight"以版本为准。

更新
  • AppDomain.CurrentDomain在Silverlight 3和4中是支持的。
  • AppDomain.GetAssemblies()在Silverlight 4中是支持的。

最简单的方法是升级到Silverlight 4,而不是绕道而行。