2013-08-01 4 views
10

Ich möchte alle meine Ansichtsmodelle per Konvention für die Serialisierung registrieren.Wie erhalten Sie Typ von TypeInfo in WinRT?

jedoch der folgende Code wird nicht kompiliert, da die var viewmodel in der foreach-Schleife vom Typ 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); 
    } 
} 

Offenbar TypeInfo erbt nicht von Type:

public abstract class TypeInfo : MemberInfo, IReflectableType 

Im Gegensatz zu den full featured version, was erbt von Type. Wie kann ich von einem WinRT TypeInfo zu Type gelangen?

+2

Es funktioniert nach MSDN? .. –

+1

'viewmodel.AsType()' ?? –

+0

@SimonWithehead Das ist für die nicht portable Bibliothek. – Alwyn

Antwort

17

TypeInfo erbt von Type in der Standard-.NET-Bibliothek, aber in der tragbaren Bibliothek wird erklärt, wie:

public abstract class TypeInfo : MemberInfo, IReflectableType 

Die Funktion AsType() die nächste Sache, die traditionellen Type

public virtual Type AsType() 

zurück Was gibt zurück Typ schwach verwandt mit TypeInfo über

public abstract class Type 
+0

Danke für diese Antwort. Es half mit einem verwandten Problem +1 – Mike