MetaUtil.ToShareTypeSig 对于泛型类型不共享
parent
a48dad21bc
commit
440b0509c2
|
@ -650,22 +650,23 @@ namespace Obfuz.Utils
|
||||||
case ElementType.Class: return corTypes.Object;
|
case ElementType.Class: return corTypes.Object;
|
||||||
case ElementType.GenericInst:
|
case ElementType.GenericInst:
|
||||||
{
|
{
|
||||||
|
// il2cpp will raise error when try to share generic value type
|
||||||
return typeSig;
|
return typeSig;
|
||||||
var gia = (GenericInstSig)a;
|
//var gia = (GenericInstSig)a;
|
||||||
TypeDef typeDef = gia.GenericType.ToTypeDefOrRef().ResolveTypeDef();
|
//TypeDef typeDef = gia.GenericType.ToTypeDefOrRef().ResolveTypeDef();
|
||||||
if (typeDef == null)
|
//if (typeDef == null)
|
||||||
{
|
//{
|
||||||
throw new Exception($"type:{a} definition could not be found");
|
// throw new Exception($"type:{a} definition could not be found");
|
||||||
}
|
//}
|
||||||
if (typeDef.IsEnum)
|
//if (typeDef.IsEnum)
|
||||||
{
|
//{
|
||||||
return ToShareTypeSig(corTypes, typeDef.GetEnumUnderlyingType());
|
// return ToShareTypeSig(corTypes, typeDef.GetEnumUnderlyingType());
|
||||||
}
|
//}
|
||||||
if (!typeDef.IsValueType)
|
//if (!typeDef.IsValueType)
|
||||||
{
|
//{
|
||||||
return corTypes.Object;
|
// 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;
|
||||||
case ElementType.ValueArray: return typeSig;
|
case ElementType.ValueArray: return typeSig;
|
||||||
|
|
Loading…
Reference in New Issue