zoukankan      html  css  js  c++  java
  • c#学习笔记----自定义类库及反编译

    2.1 自定义类库

      自定义类库能封装核心代码,保证核心的代码在交付给客户时,不让客户泄露,同时也防止非专业人士的私自更改。另外能提高程序代码的复用率,使得代码量减少,程序结构简洁。自定义类库就是程序中常见的.dll文件。

      新建一个people的自定义类库,其实吧,就和java中的打包一样的。

      类库和可移植类库的区别在于,类库是用于Windows pc机的,可移植类库可用于其他平台,比如Windows的手机等。新建一个以pelple为命名空间的类库Class1并给2个属性和一个方法用于测试。

      

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace people
     8 {
     9     public class Class1
    10     {
    11         //属性
    12         private string name;
    13         private int age;
    14         //构造方法
    15         public Class1() {//无参构造 
    16         }
    17         public Class1(string name, int age) {
    18             this.name = name;
    19             this.age = age;
    20         }
    21 
    22 
    23         //get/set方法
    24         public string class1Name {
    25             get { 
    26                 return name; 
    27             }
    28             set {
    29                 name = value;
    30             }
    31         }
    32 
    33         public int class1Age {
    34             get {
    35                 return age;
    36             }
    37 
    38             set {
    39                 age = value;
    40             }
    41         
    42         }
    43        //自定义方法
    44         public String sayHello() {
    45             string rtg;
    46             Class1 c=new Class1();
    47             c.name = "wuxinwuxin";
    48             c.age = 18;
    49             rtg = "大家好!我是" + c.age + "" + c.name;
    50             return rtg;
    51         }
    52 
    53 
    54     }
    55 }

       选中项目右键----》生成(U)即可。找到项目所在的debug文件夹,可以找到生成的类库。

      新建一个项目引用类库。找到项目下的应用,右键----》添加引用。

      引用添加成功后,引用表里除了.NET自带的类库之外,会有一个people的类库。

      测试代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Data;
     4 using System.Drawing;
     5 using System.Linq;
     6 using System.Reflection;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 using people;//自定义类库
    11 
    12  private void button4_Click(object sender, EventArgs e)
    13         {
    14             Class1 c = new Class1();
    15             c.class1Name = "测试";
    16             textBox1.Text = c.class1Name ;
    17             string rtg = c.sayHello();
    18             textBox1.Text += "/*/*/*/*   " + rtg;
    19             
    20         }

    显示如下:

      到此以后其他程序需要用到我的这个people命名空间下面的类和方法时,只要把我的这个people.dll文件拷贝过去就ok了,不需要重新实现了,当然这样的类库必须是重用性特别高的,比如连接oracle的.dll类库,否则我感觉没太大必要,除非是了保证代码安全。这样别人在调用我的这个类库时,他就不用管我内部到底是如何实现的了,这样对后来的接手维护程序的人来说,不是一个天大的好事么?

     

    2.2 反编译

         反编译前面的逆过程,有的时候我们对别人提供的dll类库好奇的时候,想要研究他是如何实现的时候就需要反编译。.dll文件一旦你生成之后,包括VS以及电脑一些常见的文本阅读器都是打不开的,这时需要一个软件Reflector软件来打开.dll文件(不是所有的都能反编译,最新版本可能反编译能力要强点吧!有官网的)。

      软件使用很简单,打开people.dll。

    有些鸟儿的羽毛太过耀眼,注定不是关在笼中的那种!
  • 相关阅读:
    zTree根据json选中节点,并且设置其他节点不可选
    点击一次按钮,发生多次ajax请求
    sublimeText3 中配置sass环境,并将编译后文件保存到指定文件夹
    MD5加密
    c# Http请求之HttpClient
    xml与object 之间的ORM
    wpf和winform的那点区别
    c# http请求ajax页面
    c# https请求
    python爬虫框架Pyspider初次接触
  • 原文地址:https://www.cnblogs.com/wuxinwuxin/p/7784544.html
Copyright © 2011-2022 走看看