获取Windows 8.1通用应用程序的引用程序集中的所有类
本文关键字:集中 程序集 程序 引用 1通 应用程序 获取 Windows | 更新日期: 2023-09-27 18:29:29
我有一个项目正在从Windows Phone 8迁移到通用Windows 8.1。
场景
在解决方案中,我有多个程序集,它们实现了在公共程序集中定义的接口(但不是每个程序集中都有,它们各不相同),但所有程序集都实现或扩展了接口IResolver
。
我在我的"主"项目/程序集中使用反射,通过向引用程序集中传递该程序集的IResolver
(接口)实现的实例来注册该程序集中的类。
代码
using System.Reflection;
...
public void Register(IResolver resolver)
{
foreach (Type classType in resolver.GetType().Assembly.GetTypes())
{
// Register the class type with the ioc container
}
}
它就像一个魅力:-)
问题
System.Type
不包含Assembly
的定义,并且找不到接受类型为System.Type
的第一个参数的扩展方法Assembly
在类型组装的文件中,它指出:
支持于:Windows Phone 8.1、Windows Phone Silverlight 8.1、Windows Phone Silverlight 8
因此在Windows 8.1中不受支持,但即使它在Windows Phone 8.1项目中,仍然表示不包含Assembly
的定义。
如果这还不够,类Assemly
就不会实现方法GetTypes()
问题
如何从接口的实例中获取Universal App的引用程序集中定义的所有类?
有什么建议或替代方案吗?
不起作用的东西
Assembly.GetExecutingAssembly()
错误:System.Reflection.Assembly
不包含GetExecutingAssembly
的定义
嗯,这很烦人。。。
GetType().GetTypeInfo()
public void Register(IResolver resolver)
{
foreach (Type classType in resolver.GetType().GetTypeInfo().Assembly.GetExportedTypes())
{
// Register the class type with the ioc container
}
}