优化,MetaUtil::ToShareTypeSig对于class类型泛型仍然共享,只对值类型不共享

backup
walon 2025-04-29 10:19:18 +08:00
parent 61370fd939
commit fa4eb5db21
1 changed files with 14 additions and 14 deletions

View File

@ -650,22 +650,22 @@ namespace Obfuz.Utils
case ElementType.Class: return corTypes.Object;
case ElementType.GenericInst:
{
var gia = (GenericInstSig)a;
TypeDef typeDef = gia.GenericType.ToTypeDefOrRef().ResolveTypeDef();
if (typeDef == null)
{
throw new Exception($"type:{a} definition could not be found");
}
if (typeDef.IsEnum)
{
return ToShareTypeSig(corTypes, typeDef.GetEnumUnderlyingType());
}
if (!typeDef.IsValueType)
{
return corTypes.Object;
}
// il2cpp will raise error when try to share generic value type
return typeSig;
//var gia = (GenericInstSig)a;
//TypeDef typeDef = gia.GenericType.ToTypeDefOrRef().ResolveTypeDef();
//if (typeDef == null)
//{
// throw new Exception($"type:{a} definition could not be found");
//}
//if (typeDef.IsEnum)
//{
// return ToShareTypeSig(corTypes, typeDef.GetEnumUnderlyingType());
//}
//if (!typeDef.IsValueType)
//{
// return corTypes.Object;
//}
//return new GenericInstSig(gia.GenericType, gia.GenericArguments.Select(ga => ToShareTypeSig(corTypes, ga)).ToList());
}
case ElementType.FnPtr: return corTypes.UIntPtr;