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

时间:2011-08-05 21:49:38

标签: c# .net silverlight reflection

在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/


看起来不可能:

Getting Runtime Assemblies in Silverlight 3

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

http://forums.silverlight.net/t/22050.aspx/1?Get+a+list+of+loaded+assemblies

2 个答案:

答案 0 :(得分:6)

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

虚拟解决方法:

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

答案 1 :(得分:4)

最初在Silverlight中询问了与Assembly.GetExecutingAssembly().GetAvailableTypes()相当的问题,这是我的第一个答案。

Silverlight支持反射:

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

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

更新

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

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