Skip to content
This repository was archived by the owner on May 9, 2023. It is now read-only.

Commit d81d6d0

Browse files
committed
Implement support for implicit struct constructors
1 parent 5dfe3bb commit d81d6d0

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/CacheObject/CacheConstructor.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ namespace UnityExplorer.CacheObject
1111
public class CacheConstructor : CacheMember
1212
{
1313
public ConstructorInfo CtorInfo { get; }
14+
readonly Type typeForStructConstructor;
1415

15-
public override Type DeclaringType => CtorInfo.DeclaringType;
16+
public override Type DeclaringType => typeForStructConstructor ?? CtorInfo.DeclaringType;
1617
public override bool IsStatic => true;
1718
public override bool ShouldAutoEvaluate => false;
1819
public override bool CanWrite => false;
@@ -22,8 +23,27 @@ public CacheConstructor(ConstructorInfo ci)
2223
this.CtorInfo = ci;
2324
}
2425

26+
public CacheConstructor(Type typeForStructConstructor)
27+
{
28+
this.typeForStructConstructor = typeForStructConstructor;
29+
}
30+
2531
public override void SetInspectorOwner(ReflectionInspector inspector, MemberInfo member)
2632
{
33+
// if is parameterless struct ctor
34+
if (typeForStructConstructor != null)
35+
{
36+
this.Owner = inspector;
37+
38+
// eg. Vector3.Vector3()
39+
this.NameLabelText = SignatureHighlighter.Parse(typeForStructConstructor, false);
40+
NameLabelText += $".{NameLabelText}()";
41+
42+
this.NameForFiltering = SignatureHighlighter.RemoveHighlighting(NameLabelText);
43+
this.NameLabelTextRaw = NameForFiltering;
44+
return;
45+
}
46+
2747
base.SetInspectorOwner(inspector, member);
2848

2949
Arguments = CtorInfo.GetParameters();

0 commit comments

Comments
 (0)