@@ -10,6 +10,7 @@ public class DefaultMemberAccessStrategy : MemberAccessStrategy
10
10
private readonly record struct Key ( Type Type , string Name ) ;
11
11
12
12
private Dictionary < Key , IMemberAccessor > _map = new ( ) ;
13
+ private bool _hasAllAccessors ;
13
14
14
15
public override IMemberAccessor GetAccessor ( Type type , string name )
15
16
{
@@ -53,7 +54,8 @@ private IMemberAccessor GetAccessorUnlikely(Type type, string name)
53
54
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
54
55
private bool TryGetAccessor ( Type type , string name , out IMemberAccessor accessor )
55
56
{
56
- return _map . TryGetValue ( new Key ( type , name ) , out accessor ) || _map . TryGetValue ( new Key ( type , "*" ) , out accessor ) ;
57
+ return _map . TryGetValue ( new Key ( type , name ) , out accessor )
58
+ || ( _hasAllAccessors && _map . TryGetValue ( new Key ( type , "*" ) , out accessor ) ) ;
57
59
}
58
60
59
61
public override void Register ( Type type , IEnumerable < KeyValuePair < string , IMemberAccessor > > accessors )
@@ -74,6 +76,7 @@ public override void Register(Type type, IEnumerable<KeyValuePair<string, IMembe
74
76
75
77
foreach ( var accessor in accessors )
76
78
{
79
+ _hasAllAccessors |= accessor . Key == "*" ;
77
80
temp [ new Key ( type , accessor . Key ) ] = accessor . Value ;
78
81
}
79
82
0 commit comments