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