优化,MetaUtil::ToShareTypeSig对于class类型泛型仍然共享,只对值类型不共享
parent
61370fd939
commit
fa4eb5db21
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue