Как получить тип из TypeInfo в WinRT?

Я хочу зарегистрировать все мои модели просмотра для сериализации по соглашению.

Однако следующий код не будет компилироваться, потому что var viewmodel в цикле foreach имеет тип 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.

Итак, как я могу добраться до Type из WinRT TypeInfo?

Ответ 1

TypeInfo наследуется от Type в стандартной библиотеке .NET, но в переносимой библиотеке он объявляется как:

public abstract class TypeInfo : MemberInfo, IReflectableType

Функция AsType() возвращает самое близкое к традиционному Type

public virtual Type AsType()

Возвращает тип, слабо связанный с TypeInfo выше

public abstract class Type