如何在WinRT中从TypeInfo获取Type?

Alw*_*wyn 10 c# reflection windows-8 windows-runtime

我希望按照惯例注册所有用于序列化的视图模型.

但是,以下代码将无法编译,因为viewmodelforeach循环中的var 是类型TypeInfo:

protected override void OnRegisterKnownTypesForSerialization()
{
    var viewModels = this.GetType().GetTypeInfo().Assembly.DefinedTypes
            .Where(t => _viewModelNameRegex.IsMatch(t.FullName))
            .ToList();

    foreach (var viewmodel in viewModels)
    {
        SessionStateService.RegisterKnownType(viewmodel);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然TypeInfo不会继承自Type:

public abstract class TypeInfo : MemberInfo, IReflectableType
Run Code Online (Sandbox Code Playgroud)

不同于完整功能版本,它继承自Type.

那么我如何Type从WinRT 获得TypeInfo

Alw*_*wyn 17

TypeInfo继承自Type标准.NET库,但在可移植库中,它被声明为:

public abstract class TypeInfo : MemberInfo, IReflectableType
Run Code Online (Sandbox Code Playgroud)

该函数AsType()返回最接近传统的东西Type

public virtual Type AsType()
Run Code Online (Sandbox Code Playgroud)

返回与TypeInfo上述弱相关的Type

public abstract class Type
Run Code Online (Sandbox Code Playgroud)