c# - 如何从 WinRT 中的 TypeInfo 获取类型?

标签 c# reflection windows-8 windows-runtime

按照惯例,我想注册我所有的 View 模型以进行序列化。

但是下面的代码将无法编译,因为 foreach 循环中的 var viewmodelTypeInfo 类型:

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

不同于 full featured version ,它继承自 Type

那么如何从 WinRT TypeInfo 获取 Type

最佳答案

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

public abstract class TypeInfo : MemberInfo, IReflectableType

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

public virtual Type AsType()

返回与上面的 TypeInfo 弱相关的 Type

public abstract class Type

关于c# - 如何从 WinRT 中的 TypeInfo 获取类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17985100/

相关文章:

c# - 如何使用流畅的断言来组合集合和属性断言?

c# - 使用 xaml 或 C# 创建灯光动画

c# - 更改数组中索引的值,将从旧索引开始的索引向右移动,同时保留左侧的所有索引不变

java - 如何使用 java 代码为自定义代码创建编辑器

c# - 将值列表分配给 C# 中的结构?

c# - 通过反射设置索引值给了我 TargetParameterCountException

c# - 获取非显式字段偏移量

windows-8 - 如何在 Windows8 应用程序中使用 ReadTextAsync(StorageFile file) 同步获取返回值

c# - 如何增加 `Slider`控件的厚度

.net - 在 WinRT 中的 UI 线程上运行代码