C#反编译

C#反编译,c#,.net,decompiling,C#,.net,Decompiling,我刚刚浏览了Telerik的JustDecompile中我自己的一些代码,注意到下面的代码 switch (data.CurrentSection) { case SurveyData.CurrentSectionEnum.Section1: divSection1.Visible = true; divSection2.Visible = false; divSection3.Visible = false;

我刚刚浏览了Telerik的JustDecompile中我自己的一些代码,注意到下面的代码

   switch (data.CurrentSection) 
   {
    case SurveyData.CurrentSectionEnum.Section1:
        divSection1.Visible = true;
        divSection2.Visible = false;
        divSection3.Visible = false;
        break;
    case SurveyData.CurrentSectionEnum.Section2:
        divSection1.Visible = false;
        divSection2.Visible = true;
        divSection3.Visible = false;
        break;
    case SurveyData.CurrentSectionEnum.Section3:
        divSection1.Visible = false;
        divSection2.Visible = false;
        divSection3.Visible = true;
        break;
    }
显示为

switch (data.CurrentSection)
{
    case CurrentSectionEnum.Section1:
    {
        this.divSection1.set_Visible(true);
        this.divSection2.set_Visible(false);
        this.divSection3.set_Visible(false);
        break;
    }
    case CurrentSectionEnum.Section2:
    {
        this.divSection1.set_Visible(false);
        this.divSection2.set_Visible(true);
        this.divSection3.set_Visible(false);
        break;
    }
    case CurrentSectionEnum.Section3:
    {
        this.divSection1.set_Visible(false);
        this.divSection2.set_Visible(false);
        this.divSection3.set_Visible(true);
        break;
    }
}

这是Telerik反编译器的产物,还是我的直觉是正确的,框架的某个较低级别部分不存在“使用等号设置”操作符?如果有人能提供更多信息吗?

属性是C#(以及VB.Net)语言的构造,而不是CLR。它们被实现为get_XXX和set_XXX方法


我希望反编译器能够识别它们

属性是C#(以及VB.Net)语言的构造,而不是CLR。它们被实现为get_XXX和set_XXX方法


我希望反编译器能够识别它们

确保您拥有最新版本的JustDecompile。我用2012.1.214.2版试过你的代码,它正在生成你所期望的C

正如其中一条评论中提到的,getter和setter只是方法。以下是IL中呼叫的外观:

ldloc.0
ldc.i4.1
callvirt instance void DivSection::set_Visible(bool)

确保您拥有最新版本的JustDecompile。我用2012.1.214.2版试过你的代码,它正在生成你所期望的C

正如其中一条评论中提到的,getter和setter只是方法。以下是IL中呼叫的外观:

ldloc.0
ldc.i4.1
callvirt instance void DivSection::set_Visible(bool)

Clear的可能副本不是一个很好的反编译器。Clear的可能副本不是一个很好的反编译器。这不是真的。属性确实存在于CLR级别(例如,请参见
PropertyInfo
),但setter和getter只是方法,这是对的。没错,程序集确实包含描述属性的元数据。反编译器应该提取它们的另一个原因。这不是真的。属性确实存在于CLR级别(例如,请参见
PropertyInfo
),但setter和getter只是方法,这是对的。没错,程序集确实包含描述属性的元数据。反编译器应该提取它们的另一个原因。