Skip to content

Commit 5debef8

Browse files
committed
override一个泛型父类时的处理
1 parent 64b28a6 commit 5debef8

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

Assets/XLua/Src/Editor/Hotfix.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,25 @@ static MethodReference findBase(TypeDefinition type, MethodDefinition method)
648648
var m = findOverride(tbase, method);
649649
if (m != null)
650650
{
651-
return m;
651+
if (type.BaseType.IsGenericInstance)
652+
{
653+
//(type.BaseType as GenericInstanceType).GenericArguments
654+
var reference = new MethodReference(m.Name, m.ReturnType, type.BaseType)
655+
{
656+
HasThis = m.HasThis,
657+
ExplicitThis = m.ExplicitThis,
658+
CallingConvention = m.CallingConvention
659+
};
660+
foreach (var parameter in m.Parameters)
661+
reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType));
662+
foreach (var generic_parameter in m.GenericParameters)
663+
reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference));
664+
return reference;
665+
}
666+
else
667+
{
668+
return m;
669+
}
652670
}
653671
tbase = tbase.BaseType.Resolve();
654672
}

Tools/XLuaHotfixInject.exe

512 Bytes
Binary file not shown.

Tools/XLuaHotfixInject.pdb

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)