@@ -41,18 +41,31 @@ public static IRequestExecutorBuilder AddDefaultNodeIdSerializer(
41
41
throw new ArgumentNullException ( nameof ( builder ) ) ;
42
42
}
43
43
44
- if ( ! builder . Services . Any ( t =>
45
- t . ServiceType == typeof ( INodeIdValueSerializer )
46
- && t . ImplementationType == typeof ( StringNodeIdValueSerializer ) ) )
44
+ if ( ! builder . Services . IsImplementationTypeRegistered < StringNodeIdValueSerializer > ( ) )
47
45
{
48
46
builder . Services . AddSingleton < INodeIdValueSerializer , StringNodeIdValueSerializer > ( ) ;
49
47
builder . Services . AddSingleton < INodeIdValueSerializer , Int16NodeIdValueSerializer > ( ) ;
50
48
builder . Services . AddSingleton < INodeIdValueSerializer , Int32NodeIdValueSerializer > ( ) ;
51
49
builder . Services . AddSingleton < INodeIdValueSerializer , Int64NodeIdValueSerializer > ( ) ;
52
- builder . Services . AddSingleton < INodeIdValueSerializer > ( new GuidNodeIdValueSerializer ( compress : outputNewIdFormat ) ) ;
53
50
builder . Services . AddSingleton < INodeIdValueSerializer , DecimalNodeIdValueSerializer > ( ) ;
54
51
builder . Services . AddSingleton < INodeIdValueSerializer , SingleNodeIdValueSerializer > ( ) ;
55
52
builder . Services . AddSingleton < INodeIdValueSerializer , DoubleNodeIdValueSerializer > ( ) ;
53
+ builder . Services . AddSingleton < INodeIdValueSerializer > ( new GuidNodeIdValueSerializer ( compress : outputNewIdFormat ) ) ;
54
+ }
55
+ else
56
+ {
57
+ // if serializers are already registered we need to replace the
58
+ // default guid serializer with the new one in order to make sure
59
+ // that we have the right settings configured for it.
60
+ var serviceRegistration = builder . Services . FirstOrDefault (
61
+ t => t . ServiceType == typeof ( INodeIdValueSerializer )
62
+ && t . ImplementationType == typeof ( GuidNodeIdValueSerializer ) ) ;
63
+ if ( serviceRegistration is not null )
64
+ {
65
+ builder . Services . Remove ( serviceRegistration ) ;
66
+ builder . Services . AddSingleton < INodeIdValueSerializer > (
67
+ new GuidNodeIdValueSerializer ( compress : outputNewIdFormat ) ) ;
68
+ }
56
69
}
57
70
58
71
builder . Services . RemoveService < INodeIdSerializer > ( ) ;
@@ -110,18 +123,14 @@ public static IRequestExecutorBuilder AddDefaultNodeIdSerializer(
110
123
/// <param name="builder">
111
124
/// The request executor builder.
112
125
/// </param>
113
- /// <param name="maxIdLength">
114
- /// The maximum allowed length of a node id.
115
- /// </param>
116
126
/// <returns>
117
127
/// Returns the request executor builder.
118
128
/// </returns>
119
129
/// <exception cref="ArgumentNullException">
120
130
/// <paramref name="builder"/> is <see langword="null"/>.
121
131
/// </exception>
122
132
public static IRequestExecutorBuilder AddLegacyNodeIdSerializer (
123
- this IRequestExecutorBuilder builder ,
124
- int maxIdLength = 1024 )
133
+ this IRequestExecutorBuilder builder )
125
134
{
126
135
if ( builder == null )
127
136
{
0 commit comments