- 相關(guān)推薦
net學(xué)習(xí)心得(6)
1.反射:反射是.net中的重要機(jī)制,通過反射可以在運(yùn)行時(shí)獲得.net中每一個(gè)類型,包括類、結(jié)構(gòu)、委托和枚舉的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等。有了反射,既可以對(duì)每一個(gè)類型了如指掌。
下面來演示一下反射的實(shí)例
(1)新建一個(gè)類庫項(xiàng)目。在解決方案上單擊右鍵選擇添加“新建項(xiàng)目”,在彈出來的框中選擇“類庫”,在下面名字欄中輸入ClassLib。然后刪除class1類,新添加一個(gè)類“ClassPerson”,添加如下代碼:
namespace ClassLib
{
public class ClassPerson
{
public ClassPerson():this(null)
{
}
public ClassPerson(string strname)
{
name = strname;
}
private string name;
private string sex;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public string Sex
{
get { return sex; }
set { sex = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public void SayHello()
{
if (null==name)
Console.WriteLine("hello World");
else
Console.WriteLine("Hello," + name);
}
}
}
添加完之后編譯生成一下,就會(huì)在這個(gè)類庫項(xiàng)目中的Bin\Debug中有一個(gè)ClassLib.dll文件。然后添加一個(gè)控制臺(tái)應(yīng)用程序。引入System.Reflaction的命名空間。添加的代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;//添加反射的命名空間
namespace ConsoleApplication4
{
public class Program
{
static void Main(string[] args)
{
Console.WriteLine("列出程序集中的所有類型");
Assembly ass = Assembly.LoadFrom("ClassLib.dll");
Type[] mytype = ass.GetTypes();
Type ClassPerson = null;
foreach (Type p in mytype)
{
Console.WriteLine(p.Name);
if (p.Name=="ClassPerson")
{
ClassPerson = p;
}
}
Console.WriteLine("列出ClassPersonl類中的所有的方法");
MethodInfo[] md = ClassPerson.GetMethods();
foreach(MethodInfo m in md)
{
Console.WriteLine(m.Name);
}
Console.WriteLine("實(shí)例化ClassPerson類,并調(diào)用SayHello方法");
object obj = Activator.CreateInstance(ClassPerson);
object objname=Activator.CreateInstance(ClassPerson,"飛鷹");
MethodInfo mysayhello = ClassPerson.GetMethod("SayHello");
mysayhello.Invoke(obj, null);//無參數(shù)構(gòu)造函數(shù)
mysayhello.Invoke(objname, null);//有參構(gòu)造函數(shù)
Console.ReadKey();
}
}
}
運(yùn)行之后的結(jié)果是:
列出程序集中的所有類型
ClassPerson
列出ClassPersonl類中的所有的方法
get_Name
set_Name
get_Sex
set_Sex
get_Age
set_Age
SayHello
ToString
Equals
GetHashCode
GetType
實(shí)例化ClassPerson類,并調(diào)用SayHello方法
hello World
Hello,飛鷹
2.using的作用
(1)引入命名空間,如:using System。
(2)using別名。
格式:using 別名=包括詳細(xì)命名空間信息的具體的類型
例如:在兩個(gè)命名空間(nameSpace1,nameSpace2)里各有一個(gè)MyClass類,這時(shí)可以這樣引入命名空間,
using aclass=nameSpace1.MyClass;
using bclass=nameSpace2.MyClass;
實(shí)例化時(shí):
aclass my1=new aclass;
bclass my2=new bclass;
(3)using定義范圍
即時(shí)釋放資源,在范圍結(jié)束時(shí)處理對(duì)象。例如:
using(Class1 cls1=new Class1())
{
}
在這個(gè)代碼段結(jié)束時(shí)會(huì)觸發(fā)cls1的Dispose方法釋放資源。
相關(guān)文章:
學(xué)習(xí).net心得
相關(guān)專題:[電腦][計(jì)算機(jī)]【net學(xué)習(xí)心得6】相關(guān)文章:
Net Worth:資本凈值05-04
ASP.NET技術(shù)選型心得04-25
asp.net網(wǎng)上花店畢業(yè)設(shè)計(jì)開題報(bào)告04-27
ASP.NET的網(wǎng)站新聞管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) -文秘文書12-15
《榜樣6》觀看學(xué)習(xí)心得11-20
Away from Net-bar Campaign遠(yuǎn)離網(wǎng)吧作文(通用15篇)04-10
《榜樣6》學(xué)習(xí)心得(精選16篇)07-20