zoukankan      html  css  js  c++  java
  • Reflector的简单使用入门学习

     

    通过这篇博文学习简单的Reflector的操作

    首先新建一个项目

    image

    在这个项目中我们新建了一个类

    public class People
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }

    在Main函数中我们做了以下操作,实例化了一个类并在控制台中打印了相关的信息

    static void Main(string[] args)
            {
                People p = new People { Id = 1, Name = "test", Age = 12 };
                Console.WriteLine("Id={0},Name={1},Age={2}", p.Id, p.Name, p.Age);
                Console.ReadLine();
            }

    将程序集拖入Reflector中

    QQ截图20141114111127

    那看到这里,可能你会觉得奇怪

    image

    通过Reflector我们可以查看到,在我们定义一个简单的类的时候,编译器帮我们生成了三个私有的字段

    [CompilerGenerated]
    private int <Age>k__BackingField;
     
    [CompilerGenerated]
    private int <Id>k__BackingField;
     
    [CompilerGenerated]
    private string <Name>k__BackingField;

    通过标签CompilerGenerated我们可以知道,这是编译器帮我们内部生成的

    查看Age属性下的方法

    image

    [CompilerGenerated]
    public void set_Age(int value)
    {
        this.<Age>k__BackingField = value;
    }
    
     [CompilerGenerated]
    public int get_Age()
    {
        return this.<Age>k__BackingField;
    }

    原来其编译器的内部还是先生成了一个私有的字段,在给属性附上字段的值

    开到这里,你是不是明白了这和我们定义一个私有字段的值和公有字段的值供给外部调用是一样的呢

    private  private int id;
    
            public int Id
            {
                get { return id; }
                set { id = value; }
            }
            private string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            private int age;
    
            public int Age
            {
                get { return age; }
                set { age = value; }
            }

    好了,到这里,我们去看看Main

    image

    更多的Reflector反编译学习的http://www.cnblogs.com/edisonchou/p/4088959.html

  • 相关阅读:
    iOS APM性能统计
    iOS promise
    静态代码检测工具Infer的部署
    ES读写数据的工作原理
    关于 Elasticsearch 内存占用及分配
    Elasticsearch中数据是如何存储的
    ES中的选举机制
    .net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等
    .net framework WEBAPI跨域问题
    Angular前端项目发布到IIS
  • 原文地址:https://www.cnblogs.com/ilooking/p/4096832.html
Copyright © 2011-2022 走看看