Skip to content

Commit 3ae5e21

Browse files
committed
Refactor for public API and expression-bodied members
Refactored properties and methods across reflection data types to use expression-bodied members for improved readability and maintainability. Changed visibility of key members in TypeData and EventData from internal to public, making the reflection API more accessible. Updated documentation to clarify public member exposure. Modernized equality and hash code implementations in MethodList and related structs. Improved performance in MemberData's AttributeData property. Overall, these changes reduce boilerplate, enhance clarity, and make the API more usable for external consumers.
1 parent 1ee7538 commit 3ae5e21

12 files changed

+342
-573
lines changed

src/BionicCode.Utilities.Reflection/ConstructorData.cs

Lines changed: 37 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,9 @@ internal ConstructorData(SymbolReflectionInfoCacheKey symbolInfoDataCacheKey)
4242

4343
public ConstructorInfo ConstructorInfo { get; }
4444

45-
public override MethodBase GetMethodBase()
46-
=> ConstructorInfo;
45+
public override MethodBase GetMethodBase() => ConstructorInfo;
4746

48-
protected override MemberInfo GetMemberInfo()
49-
=> ConstructorInfo;
47+
protected override MemberInfo GetMemberInfo() => ConstructorInfo;
5048

5149
public object Invoke(params object?[] arguments)
5250
{
@@ -69,87 +67,63 @@ public Func<object[], object> GetInvocator()
6967
return _invocator!;
7068
}
7169

72-
private void InitializeInvocator()
73-
=> _invocator = ConstructorInfo.Invoke;
70+
private void InitializeInvocator() => _invocator = ConstructorInfo.Invoke;
7471

7572
public override RuntimeMethodHandle Handle { get; }
7673

7774
public override AccessModifier AccessModifier => _accessModifier is AccessModifier.Undefined
78-
? (_accessModifier = ConstructorData.GetAccessModifierInternal(this))
79-
: _accessModifier;
75+
? (_accessModifier = ConstructorData.GetAccessModifierInternal(this))
76+
: _accessModifier;
8077

81-
public override ParameterList Parameters
82-
=> _parameters ??= ParameterListBuilder.Create(this);
78+
public override ParameterList Parameters => _parameters ??= ParameterListBuilder.Create(this);
8379

84-
public override bool HasParamsParameter
85-
=> _hasParamsParameter ??= Parameters.HasItems && Parameters[^1].IsParams;
80+
public override bool HasParamsParameter => _hasParamsParameter ??= Parameters.HasItems && Parameters[^1].IsParams;
8681

8782
public override SymbolAttributes SymbolAttributes => _symbolAttributes is SymbolAttributes.Undefined
88-
? (_symbolAttributes = ConstructorData.GetAttributesInternal(this))
89-
: _symbolAttributes;
83+
? (_symbolAttributes = ConstructorData.GetAttributesInternal(this))
84+
: _symbolAttributes;
9085

91-
public override SymbolComponentInfo SymbolComponentInfo
92-
=> _symbolComponentInfo ??= SymbolSignatureGenerator.ToSignatureComponentsInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false);
86+
public override SymbolComponentInfo SymbolComponentInfo => _symbolComponentInfo ??= SymbolSignatureGenerator.ToSignatureComponentsInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false);
9387

94-
public override string Signature
95-
=> _signature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false);
88+
public override string Signature => _signature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false);
9689

97-
public override string ShortSignature
98-
=> _shortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: false);
90+
public override string ShortSignature => _shortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: false);
9991

100-
public override string ShortCompactSignature
101-
=> _shortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: false);
92+
public override string ShortCompactSignature => _shortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: false);
10293

103-
public override string FullyQualifiedSignature
104-
=> _fullyQualifiedSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false);
94+
public override string FullyQualifiedSignature => _fullyQualifiedSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: false);
10595

106-
public override string FullyQualifiedRuntimeSignature
107-
=> _fullyQualifiedRuntimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true);
96+
public override string FullyQualifiedRuntimeSignature => _fullyQualifiedRuntimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: true, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true);
10897

109-
public override string RuntimeSignature
110-
=> _runtimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true);
98+
public override string RuntimeSignature => _runtimeSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: true, isCompact: false, isRuntimeSymbol: true);
11199

112-
public override string RuntimeShortSignature
113-
=> _runtimeShortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: true);
100+
public override string RuntimeShortSignature => _runtimeShortSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: false, isRuntimeSymbol: true);
114101

115-
public override string RuntimeShortCompactSignature
116-
=> _runtimeShortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: true);
102+
public override string RuntimeShortCompactSignature => _runtimeShortCompactSignature ??= SymbolSignatureGenerator.ToSignatureNameInternal(this, isFullyQualifiedName: false, isDeclaringTypeIncluded: false, isCompact: true, isRuntimeSymbol: true);
117103

118-
public override string DisplayName
119-
=> _displayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true);
104+
public override string DisplayName => _displayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true);
120105

121-
public override string ShortDisplayName
122-
=> _shortDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: false);
106+
public override string ShortDisplayName => _shortDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: false, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: false);
123107

124-
public override string FullyQualifiedDisplayName
125-
=> _fullyQualifiedDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: true, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true);
108+
public override string FullyQualifiedDisplayName => _fullyQualifiedDisplayName ??= SymbolSignatureGenerator.ToDisplayNameInternal(this, isFullyQualifiedName: true, isGenericTypeParameterIncluded: true, isDeclaringTypeIncluded: true);
126109

127-
public override string AssemblyName
128-
=> _assemblyName ??= DeclaringTypeData.AssemblyName;
110+
public override string AssemblyName => _assemblyName ??= DeclaringTypeData.AssemblyName;
129111

130-
public override bool IsStatic
131-
=> _isStatic ??= ConstructorInfo.IsStatic;
112+
public override bool IsStatic => _isStatic ??= ConstructorInfo.IsStatic;
132113

133-
public override bool IsPublic
134-
=> _isPublic ??= ConstructorInfo.IsPublic;
114+
public override bool IsPublic => _isPublic ??= ConstructorInfo.IsPublic;
135115

136-
public override bool IsPrivate
137-
=> _isPrivate ??= ConstructorInfo.IsPrivate;
116+
public override bool IsPrivate => _isPrivate ??= ConstructorInfo.IsPrivate;
138117

139-
public override bool IsAssembly
140-
=> _isAssembly ??= ConstructorInfo.IsAssembly;
118+
public override bool IsAssembly => _isAssembly ??= ConstructorInfo.IsAssembly;
141119

142-
public override bool IsFamily
143-
=> _isFamily ??= ConstructorInfo.IsFamily;
120+
public override bool IsFamily => _isFamily ??= ConstructorInfo.IsFamily;
144121

145-
public override bool IsFamilyOrAssembly
146-
=> _isFamilyOrAssembly ??= ConstructorInfo.IsFamilyOrAssembly;
122+
public override bool IsFamilyOrAssembly => _isFamilyOrAssembly ??= ConstructorInfo.IsFamilyOrAssembly;
147123

148-
public override bool IsFamilyAndAssembly
149-
=> _isFamilyAndAssembly ??= ConstructorInfo.IsFamilyAndAssembly;
124+
public override bool IsFamilyAndAssembly => _isFamilyAndAssembly ??= ConstructorInfo.IsFamilyAndAssembly;
150125

151-
public override ParameterizedSymbolKind ParameterizedSymbolKind
152-
=> ParameterizedSymbolKind.MemberConstructor;
126+
public override ParameterizedSymbolKind ParameterizedSymbolKind => ParameterizedSymbolKind.MemberConstructor;
153127

154128
public override RuntimeTypeHandle DeclaringTypeHandle { get; }
155129
public override bool IsExplicitInterfaceImplementation { get; }
@@ -175,11 +149,11 @@ private static SymbolAttributes GetAttributesInternal(ConstructorData constructo
175149
}
176150

177151
private static AccessModifier GetAccessModifierInternal(ConstructorData constructorData) => constructorData.IsPublic ? AccessModifier.Public
178-
: constructorData.IsPrivate ? AccessModifier.Private
179-
: constructorData.IsAssembly ? AccessModifier.Internal
180-
: constructorData.IsFamily ? AccessModifier.Protected
181-
: constructorData.IsFamilyOrAssembly ? AccessModifier.ProtectedInternal
182-
: constructorData.IsFamilyAndAssembly ? AccessModifier.PrivateProtected
183-
: constructorData.IsStatic ? AccessModifier.Undefined
184-
: throw new InvalidOperationException("Unable to identify the accessibility of the Types.");
152+
: constructorData.IsPrivate ? AccessModifier.Private
153+
: constructorData.IsAssembly ? AccessModifier.Internal
154+
: constructorData.IsFamily ? AccessModifier.Protected
155+
: constructorData.IsFamilyOrAssembly ? AccessModifier.ProtectedInternal
156+
: constructorData.IsFamilyAndAssembly ? AccessModifier.PrivateProtected
157+
: constructorData.IsStatic ? AccessModifier.Undefined
158+
: throw new InvalidOperationException("Unable to identify the accessibility of the Types.");
185159
}

0 commit comments

Comments
 (0)