@@ -16,6 +16,9 @@ public CompositeResolver(params IResolver[] resolvers)
1616
1717 public object Resolve ( CharacteristicObject obj , Characteristic characteristic )
1818 {
19+ if ( obj . HasValue ( characteristic ) )
20+ return characteristic [ obj ] ;
21+
1922 var resolver = resolvers . FirstOrDefault ( r => r . CanResolve ( characteristic ) ) ;
2023 if ( resolver != null )
2124 return resolver . Resolve ( obj , characteristic ) ;
@@ -24,10 +27,35 @@ public object Resolve(CharacteristicObject obj, Characteristic characteristic)
2427
2528 public T Resolve < T > ( CharacteristicObject obj , Characteristic < T > characteristic )
2629 {
30+ if ( obj . HasValue ( characteristic ) )
31+ return characteristic [ obj ] ;
32+
2733 var resolver = resolvers . FirstOrDefault ( r => r . CanResolve ( characteristic ) ) ;
2834 if ( resolver != null )
2935 return resolver . Resolve ( obj , characteristic ) ;
3036 throw new InvalidOperationException ( $ "There is no default resolver for { characteristic . FullId } ") ;
3137 }
38+
39+ public object Resolve ( CharacteristicObject obj , Characteristic characteristic , object defaultValue )
40+ {
41+ if ( obj . HasValue ( characteristic ) )
42+ return characteristic [ obj ] ;
43+
44+ var resolver = resolvers . FirstOrDefault ( r => r . CanResolve ( characteristic ) ) ;
45+ if ( resolver != null )
46+ return resolver . Resolve ( obj , characteristic , defaultValue ) ;
47+ return defaultValue ;
48+ }
49+
50+ public T Resolve < T > ( CharacteristicObject obj , Characteristic < T > characteristic , T defaultValue )
51+ {
52+ if ( obj . HasValue ( characteristic ) )
53+ return characteristic [ obj ] ;
54+
55+ var resolver = resolvers . FirstOrDefault ( r => r . CanResolve ( characteristic ) ) ;
56+ if ( resolver != null )
57+ return resolver . Resolve ( obj , characteristic , defaultValue ) ;
58+ return defaultValue ;
59+ }
3260 }
3361}
0 commit comments