首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dotpeek问题:无法反编译方法

Dotpeek问题:无法反编译方法
EN

Stack Overflow用户
提问于 2021-08-18 16:33:57
回答 1查看 743关注 0票数 1

为什么dotpeek不能反编译dll中的方法?(unable to decompile the method )?//问题:无法反编译方法。

代码语言:javascript
复制
public ChildModel ChildModel
{
  get => this.\u003CChildModel\u003Ek__BackingField;
  set
  {
    // ISSUE: unable to decompile the method.
  }
}

其他反编译器(例如decompiler.com)对其进行反编译没有任何问题

代码语言:javascript
复制
            set
        {
            if (_propSubscriptions.TryRemove("ChildModel", out var value2))
            {
                _003CChildModel_003Ek__BackingField.BecameDirty -= value2;
            }
            if (value != null)
            {
                Action<BecameDirtyEventArgs> value3 = delegate(BecameDirtyEventArgs args)
                {
                    OnBecameDirty("ChildModel." + ((args != null) ? args.get_PropertyPath() : null));
                };
                if (_propSubscriptions.TryAdd("ChildModel", value3))
                {
                    value.BecameDirty += value3;
                }
            }
            PropertyModified(ref _003CChildModel_003Ek__BackingField, value, "ChildModel");
        }

Setter IL

代码语言:javascript
复制
  .method public hidebysig specialname instance void
set_ChildModel(
  class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel 'value'
) cil managed

{ .custom实例空netstandardSystem.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (01 00 00 00 ) .maxstack 4 .locals init (

class Sqrt.Bws.PersistentStateStorage.ContractSqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs> System.Private.CoreLibSystem.Action`1

代码语言:javascript
复制
  [1] class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs> V_1,

  [2] bool V_2,

  [3] bool V_3
)

IL_0000: nop
IL_0001: ldarg.0      // this
IL_0002: ldfld        class [System.Collections.Concurrent]System.Collections.Concurrent.ConcurrentDictionary`2<string, class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>> Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::_propSubscriptions
IL_0007: ldstr        "ChildModel"
IL_000c: ldloca.s     V_0
IL_000e: callvirt     instance bool class [System.Collections.Concurrent]System.Collections.Concurrent.ConcurrentDictionary`2<string, class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>>::TryRemove(!0/*string*/, !1/*class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>*/&)
IL_0013: stloc.s      V_2
IL_0015: ldloc.s      V_2
IL_0017: brfalse.s    IL_0029
IL_0019: nop
IL_001a: ldarg.0      // this
IL_001b: ldfld        class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::'<ChildModel>k__BackingField'
IL_0020: ldloc.s      V_0
IL_0022: callvirt     instance void Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel::remove_BecameDirty(class [mscorlib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>)
IL_0027: nop
IL_0028: nop
IL_0029: ldarg.1      // 'value'
IL_002a: brfalse.s    IL_005c
IL_002c: nop
IL_002d: ldarg.0      // this
IL_002e: ldftn        instance void Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::'<ChildModel>NewSubscriptionLambda'(class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs)
IL_0034: newobj       instance void class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>::.ctor(object, native int)
IL_0039: stloc.1      // V_1
IL_003a: ldarg.0      // this
IL_003b: ldfld        class [System.Collections.Concurrent]System.Collections.Concurrent.ConcurrentDictionary`2<string, class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>> Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::_propSubscriptions
IL_0040: ldstr        "ChildModel"
IL_0045: ldloc.s      V_1
IL_0047: callvirt     instance bool class [System.Collections.Concurrent]System.Collections.Concurrent.ConcurrentDictionary`2<string, class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>>::TryAdd(!0/*string*/, !1/*class [System.Private.CoreLib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>*/)
IL_004c: stloc.3      // V_3
IL_004d: ldloc.3      // V_3
IL_004e: brfalse.s    IL_005b
IL_0050: nop
IL_0051: ldarg.1      // 'value'
IL_0052: ldloc.s      V_1
IL_0054: callvirt     instance void Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel::add_BecameDirty(class [mscorlib]System.Action`1<class [Sqrt.Bws.PersistentStateStorage.Contract]Sqrt.Bws.PersistentStateStorage.Contract.BecameDirtyEventArgs>)
IL_0059: nop
IL_005a: nop
IL_005b: nop
IL_005c: ldarg.0      // this
IL_005d: ldarg.0      // this
IL_005e: ldflda       class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::'<ChildModel>k__BackingField'
IL_0063: ldarg.1      // 'value'
IL_0064: ldstr        "ChildModel"
IL_0069: call         instance void Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.Model::PropertyModified<class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel>(!!0/*class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel*/&, !!0/*class Sqrt.Bws.PersistentStateStorage.Fody.Tests.TestAssembly.ChildModel*/, string)
IL_006e: nop
IL_006f: ret

} //方法Model::set_ChildModel结束

EN

回答 1

Stack Overflow用户

发布于 2021-08-19 08:24:02

所以,这是一个dotpeek bug。此问题已在重新安装后修复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68836169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档