|
5 | 5 |
|
6 | 6 | internal sealed class ConstructorData : ParameterizedMemberData |
7 | 7 | { |
8 | | - private string? displayName; |
9 | | - private string? shortDisplayName; |
10 | | - private string? fullyQualifiedDisplayName; |
11 | | - private string? signature; |
12 | | - private string? shortSignature; |
13 | | - private string? shortCompactSignature; |
14 | | - private string? fullyQualifiedSignature; |
15 | | - private string? fullyQualifiedRuntimeSignature; |
16 | | - private string? runtimeSignature; |
17 | | - private string? runtimeShortSignature; |
18 | | - private string? runtimeShortCompactSignature; |
19 | | - private SymbolAttributes symbolAttributes; |
20 | | - private AccessModifier accessModifier; |
21 | | - private ParameterList? parameters; |
| 8 | + private string? _displayName; |
| 9 | + private string? _shortDisplayName; |
| 10 | + private string? _fullyQualifiedDisplayName; |
| 11 | + private string? _signature; |
| 12 | + private string? _shortSignature; |
| 13 | + private string? _shortCompactSignature; |
| 14 | + private string? _fullyQualifiedSignature; |
| 15 | + private string? _fullyQualifiedRuntimeSignature; |
| 16 | + private string? _runtimeSignature; |
| 17 | + private string? _runtimeShortSignature; |
| 18 | + private string? _runtimeShortCompactSignature; |
| 19 | + private SymbolAttributes _symbolAttributes; |
| 20 | + private AccessModifier _accessModifier; |
| 21 | + private ParameterList? _parameters; |
22 | 22 | private bool? _hasParamsParameter; |
23 | | - private bool? isStatic; |
| 23 | + private bool? _isStatic; |
24 | 24 | private bool? _isPublic; |
25 | 25 | private bool? _isPrivate; |
26 | 26 | private bool? _isAssembly; |
27 | 27 | private bool? _isFamily; |
28 | 28 | private bool? _isFamilyOrAssembly; |
29 | 29 | private bool? _isFamilyAndAssembly; |
30 | | - private Func<object?[], object>? invocator; |
31 | | - private string? assemblyName; |
32 | | - private SymbolComponentInfo? symbolComponentInfo; |
| 30 | + private Func<object?[], object>? _invocator; |
| 31 | + private string? _assemblyName; |
| 32 | + private SymbolComponentInfo? _symbolComponentInfo; |
33 | 33 |
|
34 | | - internal ConstructorData(ConstructorInfo constructorInfo, SymbolReflectionInfoCacheKey symbolInfoDataCacheKey) |
35 | | - : base(constructorInfo, SymbolKind.MemberConstructor, symbolInfoDataCacheKey) |
| 34 | + internal ConstructorData(SymbolReflectionInfoCacheKey symbolInfoDataCacheKey) |
| 35 | + : base(symbolInfoDataCacheKey) |
36 | 36 | { |
37 | | - ArgumentNullException.ThrowIfNull(constructorInfo, nameof(constructorInfo)); |
| 37 | + ArgumentNullExceptionAdvanced.ThrowIfDefault(symbolInfoDataCacheKey); |
38 | 38 |
|
39 | | - Handle = constructorInfo.MethodHandle; |
| 39 | + Handle = symbolInfoDataCacheKey.ConstructorDescriptor.ConstructorInfo.MethodHandle; |
| 40 | + ConstructorInfo = symbolInfoDataCacheKey.ConstructorDescriptor.ConstructorInfo; |
40 | 41 | } |
41 | 42 |
|
42 | | - internal ConstructorInfo GetConstructorInfo() |
43 | | - => (ConstructorInfo)MethodInfo.GetMethodFromHandle(Handle, DeclaringTypeHandle)!; |
| 43 | + public ConstructorInfo ConstructorInfo { get; } |
44 | 44 |
|
45 | | - internal override MethodBase GetMethodBase() |
46 | | - => GetConstructorInfo(); |
| 45 | + public override MethodBase GetMethodBase() |
| 46 | + => ConstructorInfo; |
47 | 47 |
|
48 | 48 | protected override MemberInfo GetMemberInfo() |
49 | | - => GetConstructorInfo(); |
| 49 | + => ConstructorInfo; |
50 | 50 |
|
51 | | - internal object Invoke(params object?[] arguments) |
| 51 | + public object Invoke(params object?[] arguments) |
52 | 52 | { |
53 | 53 | // TODO::Implement fast invocator pattern |
54 | | - if (invocator is null) |
| 54 | + if (_invocator is null) |
55 | 55 | { |
56 | 56 | InitializeInvocator(); |
57 | 57 | } |
58 | 58 |
|
59 | | - return invocator.Invoke(arguments); |
| 59 | + return _invocator.Invoke(arguments); |
60 | 60 | } |
61 | 61 |
|
62 | | - internal Func<object[], object> GetInvocator() |
| 62 | + public Func<object[], object> GetInvocator() |
63 | 63 | { |
64 | | - if (invocator is null) |
| 64 | + if (_invocator is null) |
65 | 65 | { |
66 | 66 | InitializeInvocator(); |
67 | 67 | } |
68 | 68 |
|
69 | | - return invocator; |
| 69 | + return _invocator!; |
70 | 70 | } |
71 | 71 |
|
72 | 72 | private void InitializeInvocator() |
73 | | - => invocator = invocationArguments => GetConstructorInfo().Invoke(invocationArguments); |
| 73 | + => _invocator = ConstructorInfo.Invoke; |
74 | 74 |
|
75 | | - internal override RuntimeMethodHandle Handle { get; } |
76 | | - internal new RuntimeTypeHandle DeclaringTypeHandle { get; } |
| 75 | + public override RuntimeMethodHandle Handle { get; } |
77 | 76 |
|
78 | | - internal override AccessModifier AccessModifier => accessModifier is AccessModifier.Undefined |
79 | | - ? (accessModifier = ConstructorData.GetAccessModifierInternal(this)) |
80 | | - : accessModifier; |
| 77 | + public override AccessModifier AccessModifier => _accessModifier is AccessModifier.Undefined |
| 78 | + ? (_accessModifier = ConstructorData.GetAccessModifierInternal(this)) |
| 79 | + : _accessModifier; |
81 | 80 |
|
82 | | - internal override ParameterList Parameters |
83 | | - => parameters ??= ParameterListBuilder.Create(this); |
| 81 | + public override ParameterList Parameters |
| 82 | + => _parameters ??= ParameterListBuilder.Create(this); |
84 | 83 |
|
85 | | - internal override bool HasParamsParameter |
| 84 | + public override bool HasParamsParameter |
86 | 85 | => _hasParamsParameter ??= Parameters.HasItems && Parameters[^1].IsParams; |
87 | 86 |
|
88 | | - internal override SymbolAttributes SymbolAttributes => symbolAttributes is SymbolAttributes.Undefined |
89 | | - ? (symbolAttributes = ConstructorData.GetAttributesInternal(this)) |
90 | | - : symbolAttributes; |
| 87 | + public override SymbolAttributes SymbolAttributes => _symbolAttributes is SymbolAttributes.Undefined |
| 88 | + ? (_symbolAttributes = ConstructorData.GetAttributesInternal(this)) |
| 89 | + : _symbolAttributes; |
91 | 90 |
|
92 | | - internal override SymbolComponentInfo SymbolComponentInfo |
93 | | - => symbolComponentInfo ??= SymbolSignatureGenerator.ToSignatureComponentsInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false); |
| 91 | + public override SymbolComponentInfo SymbolComponentInfo |
| 92 | + => _symbolComponentInfo ??= SymbolSignatureGenerator.ToSignatureComponentsInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false); |
94 | 93 |
|
95 | | - internal override string Signature |
96 | | - => signature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false); |
| 94 | + public override string Signature |
| 95 | + => _signature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false); |
97 | 96 |
|
98 | | - internal override string ShortSignature |
99 | | - => shortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: false); |
| 97 | + public override string ShortSignature |
| 98 | + => _shortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: false); |
100 | 99 |
|
101 | | - internal override string ShortCompactSignature |
102 | | - => shortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: false); |
| 100 | + public override string ShortCompactSignature |
| 101 | + => _shortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: false); |
103 | 102 |
|
104 | | - internal override string FullyQualifiedSignature |
105 | | - => fullyQualifiedSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false); |
| 103 | + public override string FullyQualifiedSignature |
| 104 | + => _fullyQualifiedSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false); |
106 | 105 |
|
107 | | - internal override string FullyQualifiedRuntimeSignature |
108 | | - => fullyQualifiedRuntimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true); |
| 106 | + public override string FullyQualifiedRuntimeSignature |
| 107 | + => _fullyQualifiedRuntimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true); |
109 | 108 |
|
110 | | - internal override string RuntimeSignature |
111 | | - => runtimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true); |
| 109 | + public override string RuntimeSignature |
| 110 | + => _runtimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true); |
112 | 111 |
|
113 | | - internal override string RuntimeShortSignature |
114 | | - => runtimeShortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: true); |
| 112 | + public override string RuntimeShortSignature |
| 113 | + => _runtimeShortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: true); |
115 | 114 |
|
116 | | - internal override string RuntimeShortCompactSignature |
117 | | - => runtimeShortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: true); |
| 115 | + public override string RuntimeShortCompactSignature |
| 116 | + => _runtimeShortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: true); |
118 | 117 |
|
119 | | - internal override string DisplayName |
120 | | - => displayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true); |
| 118 | + public override string DisplayName |
| 119 | + => _displayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true); |
121 | 120 |
|
122 | | - internal override string ShortDisplayName |
123 | | - => shortDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: false); |
| 121 | + public override string ShortDisplayName |
| 122 | + => _shortDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: false); |
124 | 123 |
|
125 | | - internal override string FullyQualifiedDisplayName |
126 | | - => fullyQualifiedDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: true, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true); |
| 124 | + public override string FullyQualifiedDisplayName |
| 125 | + => _fullyQualifiedDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: true, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true); |
127 | 126 |
|
128 | | - internal override string AssemblyName |
129 | | - => assemblyName ??= DeclaringTypeData.AssemblyName; |
| 127 | + public override string AssemblyName |
| 128 | + => _assemblyName ??= DeclaringTypeData.AssemblyName; |
130 | 129 |
|
131 | | - internal override bool IsStatic |
132 | | - => isStatic ??= GetConstructorInfo().IsStatic; |
| 130 | + public override bool IsStatic |
| 131 | + => _isStatic ??= ConstructorInfo.IsStatic; |
133 | 132 |
|
134 | | - internal override bool IsPublic |
135 | | - => _isPublic ??= GetConstructorInfo().IsPublic; |
| 133 | + public override bool IsPublic |
| 134 | + => _isPublic ??= ConstructorInfo.IsPublic; |
136 | 135 |
|
137 | | - internal override bool IsPrivate |
138 | | - => _isPrivate ??= GetConstructorInfo().IsPrivate; |
| 136 | + public override bool IsPrivate |
| 137 | + => _isPrivate ??= ConstructorInfo.IsPrivate; |
139 | 138 |
|
140 | | - internal override bool IsAssembly |
141 | | - => _isAssembly ??= GetConstructorInfo().IsAssembly; |
| 139 | + public override bool IsAssembly |
| 140 | + => _isAssembly ??= ConstructorInfo.IsAssembly; |
142 | 141 |
|
143 | | - internal override bool IsFamily |
144 | | - => _isFamily ??= GetConstructorInfo().IsFamily; |
| 142 | + public override bool IsFamily |
| 143 | + => _isFamily ??= ConstructorInfo.IsFamily; |
145 | 144 |
|
146 | | - internal override bool IsFamilyOrAssembly |
147 | | - => _isFamilyOrAssembly ??= GetConstructorInfo().IsFamilyOrAssembly; |
| 145 | + public override bool IsFamilyOrAssembly |
| 146 | + => _isFamilyOrAssembly ??= ConstructorInfo.IsFamilyOrAssembly; |
148 | 147 |
|
149 | | - internal override bool IsFamilyAndAssembly |
150 | | - => _isFamilyAndAssembly ??= GetConstructorInfo().IsFamilyAndAssembly; |
| 148 | + public override bool IsFamilyAndAssembly |
| 149 | + => _isFamilyAndAssembly ??= ConstructorInfo.IsFamilyAndAssembly; |
151 | 150 |
|
152 | | - internal override ParameterizedSymbolKind ParameterizedSymbolKind |
| 151 | + public override ParameterizedSymbolKind ParameterizedSymbolKind |
153 | 152 | => ParameterizedSymbolKind.MemberConstructor; |
154 | 153 |
|
155 | | - internal override RuntimeTypeHandle DeclaringTypeHandle { get; } |
156 | | - internal override bool IsExplicitInterfaceImplementation { get; } |
157 | | - internal override RuntimeTypeHandle ImplementingTypeHandle { get; } |
| 154 | + public override RuntimeTypeHandle DeclaringTypeHandle { get; } |
| 155 | + public override bool IsExplicitInterfaceImplementation { get; } |
| 156 | + public override RuntimeTypeHandle ImplementingTypeHandle { get; } |
158 | 157 |
|
159 | 158 | /// <summary> |
160 | 159 | /// Determines the symbol attributes for a constructor based on the specified constructor data. |
|
0 commit comments