修复 RetargetTypeRefInCustomAttributes时匹配field或property没有比较TypeSig的bug
parent
688056e919
commit
1d1b257640
|
@ -34,7 +34,7 @@ namespace Obfuz
|
||||||
_options = options;
|
_options = options;
|
||||||
_assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.AssemblySearchDirs.ToArray()));
|
_assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.AssemblySearchDirs.ToArray()));
|
||||||
_renamePolicy = new CombineRenamePolicy(new SystemRenamePolicy(), new UnityRenamePolicy(), new XmlConfigRenamePolicy());
|
_renamePolicy = new CombineRenamePolicy(new SystemRenamePolicy(), new UnityRenamePolicy(), new XmlConfigRenamePolicy());
|
||||||
_nameMaker = new NameMaker();
|
_nameMaker = new TestNameMaker();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoIt()
|
public void DoIt()
|
||||||
|
|
|
@ -315,7 +315,8 @@ namespace Obfuz
|
||||||
}
|
}
|
||||||
foreach (FieldDef field in hierarchyFields)
|
foreach (FieldDef field in hierarchyFields)
|
||||||
{
|
{
|
||||||
if (field.Name == arg.Name)
|
// FIXME. field of Generic Base Type may not be same
|
||||||
|
if (field.Name == arg.Name && TypeEqualityComparer.Instance.Equals(field.FieldType, arg.Type))
|
||||||
{
|
{
|
||||||
if (!refFieldMetasMap.TryGetValue(field, out var fieldMetas))
|
if (!refFieldMetasMap.TryGetValue(field, out var fieldMetas))
|
||||||
{
|
{
|
||||||
|
@ -502,7 +503,8 @@ namespace Obfuz
|
||||||
}
|
}
|
||||||
foreach (PropertyDef field in hierarchyProperties)
|
foreach (PropertyDef field in hierarchyProperties)
|
||||||
{
|
{
|
||||||
if (field.Name == arg.Name)
|
// FIXME. field of Generic Base Type may not be same
|
||||||
|
if (field.Name == arg.Name && TypeEqualityComparer.Instance.Equals(arg.Type, field.PropertySig.RetType))
|
||||||
{
|
{
|
||||||
if (!refPropertyMetasMap.TryGetValue(field, out var fieldMetas))
|
if (!refPropertyMetasMap.TryGetValue(field, out var fieldMetas))
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
using dnlib.DotNet;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Obfuz.Rename
|
||||||
|
{
|
||||||
|
public class TestNameMaker : INameMaker
|
||||||
|
{
|
||||||
|
private int _nextIndex;
|
||||||
|
|
||||||
|
private string GetDefaultNewName(string originName)
|
||||||
|
{
|
||||||
|
return $"{originName}>{_nextIndex++}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(ModuleDefMD mod, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewNamespace(TypeDef typeDef, string originalNamespace)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalNamespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(TypeDef typeDef, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(MethodDef methodDef, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(ParamDef param, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(FieldDef fieldDef, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(PropertyDef propertyDef, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetNewName(EventDef eventDef, string originalName)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue