22using System . Collections . Generic ;
33using System . Diagnostics . CodeAnalysis ;
44
5+ #nullable enable
6+
57namespace BenchmarkDotNet . Characteristics
68{
79 public class Resolver : IResolver
810 {
9- private readonly Dictionary < Characteristic , Func < CharacteristicObject , object > > resolvers = new Dictionary < Characteristic , Func < CharacteristicObject , object > > ( ) ;
11+ private readonly Dictionary < Characteristic , Func < CharacteristicObject , object ? > > resolvers = new Dictionary < Characteristic , Func < CharacteristicObject , object ? > > ( ) ;
1012
11- protected void Register < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( Characteristic < T > characteristic , Func < T > resolver ) =>
13+ protected void Register < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( Characteristic < T > characteristic , Func < T ? > resolver ) =>
1214 resolvers [ characteristic ] = obj => resolver ( ) ;
1315
14- protected void Register < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( Characteristic < T > characteristic , Func < CharacteristicObject , T > resolver ) =>
16+ protected void Register < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( Characteristic < T > characteristic , Func < CharacteristicObject , T ? > resolver ) =>
1517 resolvers [ characteristic ] = obj => resolver ( obj ) ;
1618
1719 public bool CanResolve ( Characteristic characteristic ) => resolvers . ContainsKey ( characteristic ) ;
1820
19- public object Resolve ( CharacteristicObject obj , Characteristic characteristic )
21+ public object ? Resolve ( CharacteristicObject obj , Characteristic characteristic )
2022 {
2123 if ( obj . HasValue ( characteristic ) )
2224 return characteristic [ obj ] ;
@@ -26,17 +28,17 @@ public object Resolve(CharacteristicObject obj, Characteristic characteristic)
2628 throw new InvalidOperationException ( $ "There is no default resolver for { characteristic . FullId } ") ;
2729 }
2830
29- public T Resolve < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( CharacteristicObject obj , Characteristic < T > characteristic )
31+ public T ? Resolve < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( CharacteristicObject obj , Characteristic < T > characteristic )
3032 {
3133 if ( obj . HasValue ( characteristic ) )
3234 return characteristic [ obj ] ;
3335
3436 if ( resolvers . TryGetValue ( characteristic , out var resolver ) )
35- return ( T ) resolver ( obj ) ;
37+ return ( T ? ) resolver ( obj ) ;
3638 throw new InvalidOperationException ( $ "There is no default resolver for { characteristic . FullId } ") ;
3739 }
3840
39- public object Resolve ( CharacteristicObject obj , Characteristic characteristic , object defaultValue )
41+ public object ? Resolve ( CharacteristicObject obj , Characteristic characteristic , object defaultValue )
4042 {
4143 if ( obj . HasValue ( characteristic ) )
4244 return characteristic [ obj ] ;
@@ -47,13 +49,13 @@ public object Resolve(CharacteristicObject obj, Characteristic characteristic, o
4749 return defaultValue ;
4850 }
4951
50- public T Resolve < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( CharacteristicObject obj , Characteristic < T > characteristic , T defaultValue )
52+ public T ? Resolve < [ DynamicallyAccessedMembers ( CharacteristicObject . CharacteristicMemberTypes ) ] T > ( CharacteristicObject obj , Characteristic < T > characteristic , T defaultValue )
5153 {
5254 if ( obj . HasValue ( characteristic ) )
5355 return characteristic [ obj ] ;
5456
5557 if ( resolvers . TryGetValue ( characteristic , out var resolver ) )
56- return ( T ) resolver ( obj ) ;
58+ return ( T ? ) resolver ( obj ) ;
5759
5860 return defaultValue ;
5961 }
0 commit comments