1 instantiation of UnionCaseEntry
System.Text.Json (1)
System\Text\Json\Serialization\Metadata\DefaultJsonTypeInfoResolver.Union.cs (1)
425return new UnionCaseEntry(caseType, constructor, isNullable);
29 references to UnionCaseEntry
System.Text.Json (29)
System\Text\Json\Serialization\Metadata\DefaultJsonTypeInfoResolver.Union.cs (29)
41private readonly List<UnionCaseEntry> _caseEntries = new(); 42private readonly Dictionary<Type, UnionCaseEntry> _entryByCaseType = new(); 115if (_entryByCaseType.TryGetValue(paramType, out UnionCaseEntry? entry)) 164UnionCaseEntry[] orderedCases = BuildTopologicallySortedCaseEntries(); 165ConcurrentDictionary<Type, UnionCaseEntry?> caseIndex = CreateCaseIndex(orderedCases); 166UnionCaseEntry? nullableCase = null; 167foreach (UnionCaseEntry entry in orderedCases) 180private UnionCaseEntry[] BuildTopologicallySortedCaseEntries() 189UnionCaseEntry[] orderedCases = new UnionCaseEntry[orderedCaseTypes.Length]; 198private static ConcurrentDictionary<Type, UnionCaseEntry?> CreateCaseIndex(UnionCaseEntry[] orderedCases) 200var caseIndex = new ConcurrentDictionary<Type, UnionCaseEntry?>(); 201foreach (UnionCaseEntry entry in orderedCases) 213UnionCaseEntry[] orderedCases, 214ConcurrentDictionary<Type, UnionCaseEntry?> caseIndex, 216UnionCaseEntry? nullableCase) 254UnionCaseEntry? entry = ResolveUnionCase(caseIndex, orderedCases, runtimeType); 343UnionCaseEntry[] orderedCases, 344ConcurrentDictionary<Type, UnionCaseEntry?> caseIndex) 350foreach (UnionCaseEntry entry in _caseEntries) 371UnionCaseEntry? entry = ResolveUnionCase(caseIndex, orderedCases, caseType); 381private static UnionCaseEntry? ResolveUnionCase( 382ConcurrentDictionary<Type, UnionCaseEntry?> caseIndex, 383UnionCaseEntry[] orderedCases, 386if (caseIndex.TryGetValue(runtimeType, out UnionCaseEntry? cached)) 393UnionCaseEntry? found = null; 394foreach (UnionCaseEntry entry in orderedCases) 422private static UnionCaseEntry CreateUnionCaseEntry(Type caseType, ConstructorInfo constructorInfo, bool isNullable)