如何在WinRT中从TypeInfo获取类型

本文关键字:TypeInfo 获取 取类型 中从 WinRT | 更新日期: 2023-09-27 18:25:41

按照惯例,我想注册所有视图模型进行序列化。

但是,以下代码将不会编译,因为foreach循环中的var viewmodel的类型为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);
    }
}

显然TypeInfo不是从Type:继承的

public abstract class TypeInfo : MemberInfo, IReflectableType

与全功能版本不同,后者确实继承了Type

那么,如何从WinRT TypeInfo访问Type呢?

如何在WinRT中从TypeInfo获取类型

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

public abstract class TypeInfo : MemberInfo, IReflectableType

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

public virtual Type AsType()

返回与上的TypeInfo弱相关的Type

public abstract class Type