MetaUtil::RetargetTypeRefInTypeSig 特殊处理来自mscorlib的类型,不再创建新的Class或ValueSig
parent
b2ba676ec1
commit
882047eb6c
|
@ -266,11 +266,16 @@ namespace Obfuz.Utils
|
||||||
case ElementType.Class:
|
case ElementType.Class:
|
||||||
{
|
{
|
||||||
var vts = type as ClassOrValueTypeSig;
|
var vts = type as ClassOrValueTypeSig;
|
||||||
TypeDef typeDef = vts.TypeDefOrRef.ResolveTypeDefThrow();
|
if (vts.TypeDefOrRef is TypeDef typeDef)
|
||||||
if (typeDef == vts.TypeDefOrRef)
|
|
||||||
{
|
{
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
TypeRef typeRef = (TypeRef)vts.TypeDefOrRef;
|
||||||
|
if (typeRef.DefinitionAssembly.IsCorLib())
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
typeDef = typeRef.ResolveTypeDefThrow();
|
||||||
return type.IsClassSig ? (TypeSig)new ClassSig(typeDef) : new ValueTypeSig(typeDef);
|
return type.IsClassSig ? (TypeSig)new ClassSig(typeDef) : new ValueTypeSig(typeDef);
|
||||||
}
|
}
|
||||||
case ElementType.Array:
|
case ElementType.Array:
|
||||||
|
@ -299,7 +304,7 @@ namespace Obfuz.Utils
|
||||||
foreach (var arg in gis.GenericArguments)
|
foreach (var arg in gis.GenericArguments)
|
||||||
{
|
{
|
||||||
TypeSig newArg = RetargetTypeRefInTypeSig(arg);
|
TypeSig newArg = RetargetTypeRefInTypeSig(arg);
|
||||||
anyChange |= newArg != genericType;
|
anyChange |= newArg != arg;
|
||||||
genericArgs.Add(newArg);
|
genericArgs.Add(newArg);
|
||||||
}
|
}
|
||||||
if (!anyChange)
|
if (!anyChange)
|
||||||
|
|
Loading…
Reference in New Issue