From f1ca4847122a91c4efcf5506f3c485c834d81526 Mon Sep 17 00:00:00 2001 From: Sinai <49360850+sinai-dev@users.noreply.github.com> Date: Wed, 16 Mar 2022 23:21:39 +1100 Subject: [PATCH] Fix generic arguments for parameterless struct ctors --- src/CacheObject/CacheConstructor.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/CacheObject/CacheConstructor.cs b/src/CacheObject/CacheConstructor.cs index e6de8da..4f33f16 100644 --- a/src/CacheObject/CacheConstructor.cs +++ b/src/CacheObject/CacheConstructor.cs @@ -30,9 +30,11 @@ namespace UnityExplorer.CacheObject public override void SetInspectorOwner(ReflectionInspector inspector, MemberInfo member) { + Type ctorReturnType; // if is parameterless struct ctor if (typeForStructConstructor != null) { + ctorReturnType = typeForStructConstructor; this.Owner = inspector; // eg. Vector3.Vector3() @@ -43,12 +45,16 @@ namespace UnityExplorer.CacheObject this.NameLabelTextRaw = NameForFiltering; return; } + else + { + base.SetInspectorOwner(inspector, member); - base.SetInspectorOwner(inspector, member); - - Arguments = CtorInfo.GetParameters(); - if (CtorInfo.DeclaringType.IsGenericTypeDefinition) - GenericArguments = CtorInfo.DeclaringType.GetGenericArguments(); + Arguments = CtorInfo.GetParameters(); + ctorReturnType = CtorInfo.DeclaringType; + } + + if (ctorReturnType.IsGenericTypeDefinition) + GenericArguments = ctorReturnType.GetGenericArguments(); } protected override object TryEvaluate()