2013-08-01 24 views
10

Tôi muốn đăng ký tất cả các mô hình chế độ xem của mình để tuần tự hóa theo quy ước.Cách nhận Loại từ TypeInfo trong WinRT?

Tuy nhiên đoạn mã sau sẽ không biên dịch vì var viewmodel trong vòng lặp foreach là loại 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); 
    } 
} 

Rõ ràng TypeInfo không kế thừa từ Type:

public abstract class TypeInfo : MemberInfo, IReflectableType 

Khác với full featured version, được kế thừa từ Type.

Vậy làm cách nào tôi có thể truy cập Type từ một WinRT TypeInfo?

+2

Nó thực hiện theo MSDN? .. –

+1

'viewmodel.AsType()' ?? –

+0

@SimonWhitehead Đó là dành cho thư viện không di động. – Alwyn

Trả lời

17

TypeInfo thừa hưởng từ Type trong thư viện .NET tiêu chuẩn, nhưng trong thư viện di động nó được khai báo là:

public abstract class TypeInfo : MemberInfo, IReflectableType 

Chức năng AsType() trả về điều gần gũi nhất với các truyền thống Type

public virtual Type AsType() 

Loại trả về nào có liên quan yếu đến số TypeInfo ở trên

public abstract class Type 
+0

Cảm ơn câu trả lời này. Nó đã giúp với một vấn đề liên quan +1 – Mike

Các vấn đề liên quan