网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

.net C# 反射技术使用例子

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13

获得实例的方法
1.获得同一程序集内的类型的实例。 

无参数构造函数
Type t = Type.GetType("AppCode.Employe");

if (t == null)
{
textBox1.Text = "Create Type Error";
return;
}

object emp = t.Assembly.CreateInstance("AppCode.Employe");

if (emp == null)
{
textBox1.Text = "Create Instance Error";
return;
}

StringBuilder sb = new StringBuilder();
sb.AppendLine("Type:" + t.FullName);
sb.AppendLine("Context:");
sb.AppendLine(emp.ToString());

textBox1.Text = sb.ToString();
 

有参数构造函数
Type t = Type.GetType("AppCode.Employe");

if (t == null)
{
textBox1.Text = "Create Type Error";
return;
}

//构造函数参数列表如下
//public Employe(string userid, string username, int age)

//生成参数类型数组
Type ts = new Type { typeof(System.String),typeof(System.String), typeof(System.Int16) };

//获得构造函数
ConstructorInfo mi = t.GetConstructor(ts);

if (mi == null)
{
textBox1.Text = "Create ConstructorInfo Error";
return;
}

//生成参数值数组
object ps=new object;
ps[0] = "420106780911326";
ps = "wesker";
ps = 36;

object emp=mi.Invoke(ps);

StringBuilder sb = new StringBuilder();
sb.AppendLine("Type:" + t.FullName);
sb.AppendLine("Context:");
sb.AppendLine(emp.ToString());

textBox1.Text = sb.ToString();
2.获得不同程序集内的类型的实例。
比如当前窗体程序要通过反射获得一个名为"compenent1"(文件名为compenent1.dll)的程序集中的类型的实例。


无参数构造函数
Type t = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\\compenent1.dll").
GetType("compenent1.User");

if (t == null)
{
textBox1.Text = "Create Type Error";
return;
}

object user = t.Assembly.CreateInstance("compenent1.User");

if (user == null)
{
textBox1.Text = "Create Instance Error";
return;
}

StringBuilder sb = new StringBuilder();
sb.AppendLine("Type:" + t.FullName);
sb.AppendLine("Context:");
sb.AppendLine(user.ToString());

textBox1.Text = sb.ToString();
 

有参数的构造函数
Type t = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\\compenent1.dll").
GetType("compenent1.User");

if (t == null)
{
textBox1.Text = "Create Type Error";
return;
}

//构造函数参数列表如下
//public Employe(string userid, string username, int age)

Type ts = new Type { typeof(System.String), typeof(System.String), typeof(System.Int16) };

ConstructorInfo mi = t.GetConstructor(ts);

if (mi == null)
{
textBox1.Text = "Create ConstructorInfo Error";
return;
}

object ps = new object;
ps[0] = "420106780911326";
ps = "wesker";
ps = 36;

object user = mi.Invoke(ps);

StringBuilder sb = new StringBuilder();
sb.AppendLine("Type:" + t.FullName);
sb.AppendLine("Context:");
sb.AppendLine(user.ToString());

textBox1.Text = sb.ToString();
3.使用反射调用方法


Type t = Type.GetType("AppCode.Employe");

if (t == null)
{
textBox1.Text = "Create Type Error";
return;
}

object emp = t.Assembly.CreateInstance("AppCode.Employe");

if (em

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号