优化,MetaUtil::ToShareTypeSig对于class类型泛型仍然共享,只对值类型不共享
parent
61370fd939
commit
fa4eb5db21
|
@ -650,22 +650,22 @@ namespace Obfuz.Utils
|
||||||
case ElementType.Class: return corTypes.Object;
|
case ElementType.Class: return corTypes.Object;
|
||||||
case ElementType.GenericInst:
|
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
|
// il2cpp will raise error when try to share generic value type
|
||||||
return typeSig;
|
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());
|
//return new GenericInstSig(gia.GenericType, gia.GenericArguments.Select(ga => ToShareTypeSig(corTypes, ga)).ToList());
|
||||||
}
|
}
|
||||||
case ElementType.FnPtr: return corTypes.UIntPtr;
|
case ElementType.FnPtr: return corTypes.UIntPtr;
|
||||||
|
|
Loading…
Reference in New Issue