在Silverlight中使用reflection来迭代所有引用程序集中的类型?

在银光中是否存在相同的情况?

var assemblies = AppDomain.CurrentDomain.GetAssemblies(); 

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

还有另一种方法吗?

这是一篇关于如何在混合下设计时间的文章…但是如何在运行时?

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+a+list+of+loaded+assemblies

这个问题最初要求在Silverlight中与Assembly.GetExecutingAssembly().GetAvailableTypes()等效,这是我的第一个答案。

Silverlight支持reflection:

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

有关详细信息 ,请参阅文档并选择“Silverlight”作为版本。

更新

  • Silverlight 3和4支持AppDomain.CurrentDomain
  • Silverlight 4支持AppDomain.GetAssemblies()

最简单的方法是升级到Silverlight 4,而不是必须做变通办法。

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

虚拟解决方法:

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