c#学习笔记02----自定义类库及反编译
2021-05-01 12:26
标签:val window bug orm rgs ext hello public 提高 2.1 自定义类库 自定义类库能封装核心代码,保证核心的代码在交付给客户时,不让客户泄露,同时也防止非专业人士的私自更改。另外能提高程序代码的复用率,使得代码量减少,程序结构简洁。自定义类库就是程序中常见的.dll文件。 新建一个people的自定义类库,其实吧,就和java中的导包一样的。
类库和可移植类库的区别在于,类库是用于Windows pc机的,可移植类库可用于其他平台,比如Windows的手机等。新建一个以pelple为命名空间的类库Class1并给2个属性和一个方法用于测试。 选中项目右键----》生成(U)即可。找到项目所在的debug文件夹,可以找到生成的类库。
新建一个项目引用类库。找到项目下的应用,右键----》添加引用。
引用添加成功后,引用表里除了.NET自带的类库之外,会有一个people的类库。
测试代码如下: 显示如下:
到此以后其他程序需要用到我的这个people命名空间下面的类和方法时,只要把我的这个people.dll文件拷贝过去就ok了,不需要重新实现了,当然这样的类库必须是重用性特别高的,比如连接oracle的.dll类库,否则我感觉没太大必要,除非是了保证代码安全,这样别人在调用我的这个类库时,他就不用管我内部到底是如何实现的了,这样对后来的接手维护程序的人来说,不是一个天大的好事么? 2.2 反编译 反编译前面的逆过程,有的时候我们对别人提供的dll类库好奇的时候,想要研究他是如何实现的时候就需要反编译。.dll文件一旦你生成之后,包括VS以及电脑一些常见的文本阅读器都是打不开的,这时需要一个软件Reflector软件来打开.dll文件(不是所有的都能反编译,最新版本可能反编译能力要强点吧!有官网的)。
软件使用很简单,打开people.dll。
c#学习笔记02----自定义类库及反编译 标签:val window bug orm rgs ext hello public 提高 原文地址:http://www.cnblogs.com/wuxinwuxin/p/7784544.html 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 }
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 }
下一篇:C#获取当前日期时间(转)