2
2
// Licensed under the MIT License.
3
3
4
4
using System . Collections ;
5
+ using System . Collections . Concurrent ;
5
6
using System . Collections . Generic ;
6
7
using System . Text ;
7
8
using Microsoft . CodeAnalysis . Text ;
@@ -31,6 +32,7 @@ private void EmitContextClass(ModelReaderWriterContextGenerationSpec contextGene
31
32
{
32
33
var contextName = contextGenerationSpec . Type . Name ;
33
34
var namespaces = GetNameSpaces ( contextGenerationSpec ) ;
35
+ namespaces . Add ( "System.Collections.Concurrent" ) ;
34
36
35
37
var indent = 0 ;
36
38
var builder = new StringBuilder ( ) ;
@@ -59,7 +61,7 @@ private void EmitContextClass(ModelReaderWriterContextGenerationSpec contextGene
59
61
builder . AppendLine ( $ "{ s_modelReaderWriterTypeBuilder } >> _typeBuilderFactories = new();") ;
60
62
61
63
builder . Append ( indent , "private readonly " ) ;
62
- builder . AppendType ( typeof ( Dictionary < , > ) ) ;
64
+ builder . AppendType ( typeof ( ConcurrentDictionary < , > ) ) ;
63
65
builder . Append ( "<" ) ;
64
66
builder . AppendType ( typeof ( Type ) ) ;
65
67
builder . Append ( ", " ) ;
@@ -134,7 +136,7 @@ private void EmitContextClass(ModelReaderWriterContextGenerationSpec contextGene
134
136
builder . AppendLine ( indent , "{" ) ;
135
137
indent ++ ;
136
138
builder . AppendLine ( indent , "builder = factory();" ) ;
137
- builder . AppendLine ( indent , "_typeBuilders.Add (type, builder);" ) ;
139
+ builder . AppendLine ( indent , "_typeBuilders.TryAdd (type, builder);" ) ;
138
140
builder . AppendLine ( indent , "return true;" ) ;
139
141
indent -- ;
140
142
builder . AppendLine ( indent , "}" ) ;
@@ -147,7 +149,7 @@ private void EmitContextClass(ModelReaderWriterContextGenerationSpec contextGene
147
149
builder . AppendLine ( indent , $ "if (kvp.Value.TryGetTypeBuilder(type, out builder))") ;
148
150
builder . AppendLine ( indent , "{" ) ;
149
151
indent ++ ;
150
- builder . AppendLine ( indent , $ "_typeBuilders.Add (type, builder);") ;
152
+ builder . AppendLine ( indent , $ "_typeBuilders.TryAdd (type, builder);") ;
151
153
builder . AppendLine ( indent , "return true;" ) ;
152
154
indent -- ;
153
155
builder . AppendLine ( indent , "}" ) ;
0 commit comments