获取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 的定义

获取Windows 8.1通用应用程序的引用程序集中的所有类

嗯,这很烦人。。。

GetType().GetTypeInfo()

public void Register(IResolver resolver)
{
   foreach (Type classType in resolver.GetType().GetTypeInfo().Assembly.GetExportedTypes())
   {
      // Register the class type with the ioc container
   }
}