2013-08-01 16 views
10

Desidero registrare tutti i miei modelli di visualizzazione per la serializzazione, per convenzione.Come ottenere Type da TypeInfo in WinRT?

Tuttavia il seguente codice non compilato perché la var viewmodel nel ciclo foreach è di tipo 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); 
    } 
} 

Apparentemente TypeInfo non eredita da Type:

public abstract class TypeInfo : MemberInfo, IReflectableType 

A differenza del full featured version, che eredita da Type.

Quindi, come posso arrivare a Type da un WinRT TypeInfo?

+2

Fa secondo MSDN? .. –

+1

'viewmodel.AsType()' ?? –

+0

@SimonWhitehead Questo è per la libreria non portatile. – Alwyn

risposta

17

TypeInfo eredita dal Type nella libreria standard .NET, ma nella biblioteca portatile viene dichiarato come:

public abstract class TypeInfo : MemberInfo, IReflectableType 

La funzione AsType() restituisce la cosa più vicina al tradizionale Type

public virtual Type AsType() 

il che restituisce il tipo debolmente legati alla TypeInfo sopra

public abstract class Type 
+0

Grazie per questa risposta. Ha aiutato con un problema correlato +1 – Mike

Problemi correlati