按照惯例,我想注册我所有的 View 模型以进行序列化。
但是下面的代码将无法编译,因为 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
不同于 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/