zoukankan      html  css  js  c++  java
  • <LabelId>k__BackingField反编译错误修改

    使用 reflector后生成的源代码出现

    private string <LabelId>k__BackingField;

    这样的问题,造成编译失败。

    解决方法:

    因为菜,所以不能改 reflector ,只好改生成的源代码了,使用.net 的在文件中替换的功能来解决:

    1Ctrl+Shift_H 打开替换窗口;

    2、如下图示,使用正则表达式替换;

    查找内容:\<{.#}\>k__BackingField

    替换内容:_\1_k__BackingField

    3、结束。

    没办法,懒人就是这个样子,谁让生成的代码里边这种错误这么多呢,要不然也用不着这个方法了。

    解释:

    CompilerGenerated是反编译生成的代码如
     public class MyClass
            {
                public string Name{set;get;}
                public string Value { set; get; }

                public MyClass(string pName, string pValue) 
                {
                    Name = pName;
                    Value = pValue;
                }

            }
    反编译后
    反编译后
    public class MyClass
    {
        // Fields
        [CompilerGenerated]
        private string <Name>k__BackingField;
        [CompilerGenerated]
        private string <Value>k__BackingField;

        // Methods
        public MyClass(string pName, string pValue)
        {
            base..ctor();
            this.Name = pName;
            this.Value = pValue;
            return;
        }

        // Properties
        public string Name
        {
            [CompilerGenerated]
            get
            {
                string str;
                str = this.<Name>k__BackingField;
            Label_0009:
                return str;
            }
            [CompilerGenerated]
            set
            {
                this.<Name>k__BackingField = value;
                return;
            }
        }

        public string Value
        {
            [CompilerGenerated]
            get
            {
                string str;
                str = this.<Value>k__BackingField;
            Label_0009:
                return str;
            }
            [CompilerGenerated]
            set
            {
                this.<Value>k__BackingField = value;
                return;
            }
        }
    }

    <URL>k__BackingField只不过就是一"变量命名"
    只不过vs不认这个命名而以,把这个命名改成vs能认的命名就可以了。
    PWUrlRedirect
    代码简短,我直接把<URL>k__BackingField改成 _url,编译通过
    需要注意的是:要主动应用"替换"功能,vs自动的替换没有作用(它根本不认为那是变量,不会主动替换的)。

        if (localHeader || this.size == (ulong)-1)
        {
         this.size = (ulong)zipExtraData.ReadLong();
        }

    -1是不可能转换成ulong,全部替换== (ulong)-1  --------》 <0

    base..ctor();--------》注释掉

    this.string_2 != "";-->

    bool flag1 = this.string_2 != "";

    frmTbSp_tao.<>c__DisplayClass3 <>c__DisplayClass = new frmTbSp_tao.<>c__DisplayClass3();
    <>c__DisplayClass.<>4__this = this;

    这句子是多余的

    <>c__DisplayClass.ipc = 0;

    ipc这个变量是没有的,需要添加:

    private int ipc = 0;

    <>c__DisplayClass.<>4__this 换成 this

    ExeSearch.>c__DisplayClass3 <>c__DisplayClass = new ExeSearch.>c__DisplayClass3();
    ExeSearch.>c__DisplayClass3 arg_7F_0 = <>c__DisplayClass;

     这两句多余的

    改成

     IHTMLDocument2 doc2;

    以下

    arg_7F_0.doc2 = ExeSearch.stayTime_SiteContainer0.Site1.Target(ExeSearch.stayTime_SiteContainer0.Site1, iePopup.Document);

    改成

    doc2 = ExeSearch.stayTime_SiteContainer0.Site1.Target(ExeSearch.stayTime_SiteContainer0.Site1, iePopup.Document);

  • 相关阅读:
    【.Net】多语言查看MSDN
    【.Net】 显示星期字符串
    【.Net】 判断时间字符串正确性
    【.Net】 实现窗口拖动
    【.Net】 Winform 单例运行实例
    Kendo 计算字段
    Kendo UI 的 k-template
    UpdatePanel中用后台CS代码调用JS代码,先执行控件事件,后触发JS
    SQL常用
    Node.js 安装
  • 原文地址:https://www.cnblogs.com/sung/p/3081050.html
Copyright © 2011-2022 走看看