public override MvxBasePresentationAttribute CreatePresentationAttribute(Type viewModelType, Type viewType) { if (viewType.GetTypeInfo().IsSubclassOf(typeof(ContentPage))) { MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " + $"Assuming ContentPage presentation"); return(new MvxContentPagePresentationAttribute() { ViewType = viewType, ViewModelType = viewModelType }); } if (viewType.GetTypeInfo().IsSubclassOf(typeof(CarouselPage))) { MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " + $"Assuming CarouselPage presentation"); return(new MvxCarouselPagePresentationAttribute() { ViewType = viewType, ViewModelType = viewModelType }); } if (viewType.GetTypeInfo().IsSubclassOf(typeof(TabbedPage))) { MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " + $"Assuming TabbedPage presentation"); return(new MvxTabbedPagePresentationAttribute() { ViewType = viewType, ViewModelType = viewModelType }); } if (viewType.GetTypeInfo().IsSubclassOf(typeof(MasterDetailPage))) { MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " + $"Assuming MasterDetailPage presentation"); return(new MvxMasterDetailPagePresentationAttribute() { ViewType = viewType, ViewModelType = viewModelType }); } if (viewType.GetTypeInfo().IsSubclassOf(typeof(NavigationPage))) { MvxFormsLog.Instance.Trace($"PresentationAttribute not found for {viewModelType.Name}. " + $"Assuming NavigationPage presentation"); return(new MvxNavigationPagePresentationAttribute() { ViewType = viewType, ViewModelType = viewModelType }); } return(PlatformPresenter.CreatePresentationAttribute(viewModelType, viewType)); }