在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[];