1
-
2
-
3
- using System ;
4
- using System . Collections . Generic ;
5
1
using System . ComponentModel ;
6
2
using System . Diagnostics . CodeAnalysis ;
7
3
using System . Globalization ;
8
4
using System . Reflection ;
9
5
6
+ #nullable enable
10
7
namespace Prism . Mvvm
11
8
{
12
9
/// <summary>
@@ -52,24 +49,24 @@ public static void Reset()
52
49
/// <summary>
53
50
/// ViewModelFactory that provides the View instance and ViewModel type as parameters.
54
51
/// </summary>
55
- static Func < object , Type , object > _defaultViewModelFactoryWithViewParameter ;
52
+ static Func < object , Type , object > ? _defaultViewModelFactoryWithViewParameter ;
56
53
57
54
/// <summary>
58
55
/// Default view type to view model type resolver, assumes the view model is in same assembly as the view type, but in the "ViewModels" namespace.
59
56
/// </summary>
60
- static Func < Type , Type > _defaultViewTypeToViewModelTypeResolver = DefaultViewTypeToViewModel ;
57
+ static Func < Type , Type ? > _defaultViewTypeToViewModelTypeResolver = DefaultViewTypeToViewModel ;
61
58
62
- private static Type DefaultViewTypeToViewModel ( Type viewType )
59
+ private static Type ? DefaultViewTypeToViewModel ( Type viewType )
63
60
{
64
61
var viewName = viewType . FullName ;
65
- viewName = viewName . Replace ( ".Views." , ".ViewModels." ) ;
62
+ viewName = viewName ? . Replace ( ".Views." , ".ViewModels." ) ;
66
63
var viewAssemblyName = viewType . GetTypeInfo ( ) . Assembly . FullName ;
67
- var suffix = viewName . EndsWith ( "View" ) ? "Model" : "ViewModel" ;
64
+ var suffix = viewName != null && viewName . EndsWith ( "View" ) ? "Model" : "ViewModel" ;
68
65
var viewModelName = string . Format ( CultureInfo . InvariantCulture , "{0}{1}, {2}" , viewName , suffix , viewAssemblyName ) ;
69
66
return Type . GetType ( viewModelName ) ;
70
67
}
71
68
72
- static Func < object , Type > _defaultViewToViewModelTypeResolver = view => null ;
69
+ static Func < object , Type ? > _defaultViewToViewModelTypeResolver = view => null ;
73
70
74
71
/// <summary>
75
72
/// Sets the default view model factory.
@@ -93,7 +90,7 @@ public static void SetDefaultViewModelFactory(Func<object, Type, object> viewMod
93
90
/// Sets the default view type to view model type resolver.
94
91
/// </summary>
95
92
/// <param name="viewTypeToViewModelTypeResolver">The view type to view model type resolver.</param>
96
- public static void SetDefaultViewTypeToViewModelTypeResolver ( Func < Type , Type > viewTypeToViewModelTypeResolver )
93
+ public static void SetDefaultViewTypeToViewModelTypeResolver ( Func < Type , Type ? > viewTypeToViewModelTypeResolver )
97
94
{
98
95
_defaultViewTypeToViewModelTypeResolver = viewTypeToViewModelTypeResolver ;
99
96
}
@@ -102,7 +99,7 @@ public static void SetDefaultViewTypeToViewModelTypeResolver(Func<Type, Type> vi
102
99
/// Sets the default ViewModel Type Resolver given the View instance. This can be used to evaluate the View for
103
100
/// custom attributes or Attached Properties to determine the ViewModel Type.
104
101
/// </summary>
105
- public static void SetDefaultViewToViewModelTypeResolver ( Func < object , Type > viewToViewModelTypeResolver ) =>
102
+ public static void SetDefaultViewToViewModelTypeResolver ( Func < object , Type ? > viewToViewModelTypeResolver ) =>
106
103
_defaultViewToViewModelTypeResolver = viewToViewModelTypeResolver ;
107
104
108
105
/// <summary>
@@ -114,7 +111,7 @@ public static void SetDefaultViewToViewModelTypeResolver(Func<object, Type> view
114
111
public static void AutoWireViewModelChanged ( object view , Action < object , object > setDataContextCallback )
115
112
{
116
113
// Try mappings first
117
- object viewModel = GetViewModelForView ( view ) ;
114
+ object ? viewModel = GetViewModelForView ( view ) ;
118
115
119
116
// try to use ViewModel type
120
117
if ( viewModel == null )
@@ -144,30 +141,24 @@ public static void AutoWireViewModelChanged(object view, Action<object, object>
144
141
/// </summary>
145
142
/// <param name="view">The view that the view model wants.</param>
146
143
/// <returns>The ViewModel that corresponds to the view passed as a parameter.</returns>
147
- private static object GetViewModelForView ( object view )
144
+ private static object ? GetViewModelForView ( object view )
148
145
{
149
146
var viewKey = view . GetType ( ) . ToString ( ) ;
150
147
151
148
// Mapping of view models base on view type (or instance) goes here
152
- if ( _factories . ContainsKey ( viewKey ) )
153
- return _factories [ viewKey ] ( ) ;
154
-
155
- return null ;
149
+ return _factories . ContainsKey ( viewKey ) ? _factories [ viewKey ] ( ) : null ;
156
150
}
157
151
158
152
/// <summary>
159
153
/// Gets the ViewModel type for the specified view.
160
154
/// </summary>
161
155
/// <param name="view">The View that the ViewModel wants.</param>
162
156
/// <returns>The ViewModel type that corresponds to the View.</returns>
163
- private static Type GetViewModelTypeForView ( Type view )
157
+ private static Type ? GetViewModelTypeForView ( Type view )
164
158
{
165
159
var viewKey = view . ToString ( ) ;
166
160
167
- if ( _typeFactories . ContainsKey ( viewKey ) )
168
- return _typeFactories [ viewKey ] ;
169
-
170
- return null ;
161
+ return _typeFactories . ContainsKey ( viewKey ) ? _typeFactories [ viewKey ] : null ;
171
162
}
172
163
173
164
/// <summary>
0 commit comments