@@ -14,12 +14,14 @@ public interface IMessageTypeResolutionStrategy {
14
14
#endif
15
15
}
16
16
17
- public class DefaultMessageTypeResolutionStrategy ( IMessageTypeMapper messageTypeMapper )
18
- : IMessageTypeResolutionStrategy {
17
+ public class MessageTypeResolutionStrategyWrapper (
18
+ IMessageTypeMapper messageTypeMapper ,
19
+ IMessageTypeResolutionStrategy messageTypeResolutionStrategy
20
+ ) : IMessageTypeResolutionStrategy {
19
21
public string ResolveTypeName ( object messageData ) {
20
22
return messageTypeMapper . GetOrAddTypeName (
21
23
messageData . GetType ( ) ,
22
- clrType => clrType . FullName !
24
+ _ => messageTypeResolutionStrategy . ResolveTypeName ( messageData )
23
25
) ;
24
26
}
25
27
@@ -30,18 +32,36 @@ public bool TryResolveClrType(EventRecord messageRecord, [NotNullWhen(true)] out
30
32
#endif
31
33
type = messageTypeMapper . GetOrAddClrType (
32
34
messageRecord . EventType ,
33
- _ => {
34
- var serializationMetadata = messageRecord . Metadata . ExtractSerializationMetadata ( ) ;
35
+ _ => messageTypeResolutionStrategy . TryResolveClrType ( messageRecord , out var resolvedType )
36
+ ? resolvedType
37
+ : null
38
+ ) ;
39
+
40
+ return type != null ;
41
+ }
42
+ }
35
43
36
- if ( ! serializationMetadata . IsValid )
37
- return null ;
44
+ public class DefaultMessageTypeResolutionStrategy
45
+ : IMessageTypeResolutionStrategy {
46
+ public string ResolveTypeName ( object messageData ) =>
47
+ messageData . GetType ( ) . FullName ! ;
38
48
39
- return Type . GetType (
40
- serializationMetadata . MessageTypeAssemblyQualifiedName
41
- ?? serializationMetadata . MessageTypeClrTypeName !
42
- ) ;
43
- }
44
- ) ;
49
+ #if NET48
50
+ public bool TryResolveClrType ( EventRecord messageRecord , out Type ? type ) {
51
+ #else
52
+ public bool TryResolveClrType ( EventRecord messageRecord , [ NotNullWhen ( true ) ] out Type ? type ) {
53
+ #endif
54
+ var serializationMetadata = messageRecord . Metadata . ExtractSerializationMetadata ( ) ;
55
+
56
+ if ( ! serializationMetadata . IsValid ) {
57
+ type = null ;
58
+ return false ;
59
+ }
60
+
61
+ type = Type . GetType ( serializationMetadata . MessageTypeAssemblyQualifiedName ! )
62
+ ?? TypeProvider . GetFirstMatchingTypeFromCurrentDomainAssembly (
63
+ serializationMetadata . MessageTypeClrTypeName !
64
+ ) ;
45
65
46
66
return type != null ;
47
67
}
0 commit comments