=波波日志 > Asp.Net/C#/WCF > 反射-实例化一个未知的类(使用System.Type类)=
[转]反射-实例化一个未知的类(使用System.Type类)
第一步,新建一个类库,写入代码如下:
第二步,将类库的DLL文件复制到新建的程序集目录下,然后在程序集中加入如下代码:
注意:我加载程序集时使用的是"wangjun" 字符串"wangjun"代表的是程序集的名称,是我在建立类库时在类库的项目中点右键属性在这个里面设置的名称,刚才加载的不是物理文件的名称,物理文件件的名称是"wangjun.dll",如果Assembly.Load()静态方法里面你如果添入物理名称的话,它会显示找不到文件 FileNotFond
来源:http://2sws.blog.163.com/blog/static/17910249200984345847/
+展开
-C#
using System;
using System.Collections.Generic;
using System.Text;
namespace wangjun
{
public class wangjun
{
public int Sum(int i, int j)
{
return i + j;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace wangjun
{
public class wangjun
{
public int Sum(int i, int j)
{
return i + j;
}
}
}
第二步,将类库的DLL文件复制到新建的程序集目录下,然后在程序集中加入如下代码:
+展开
-C#
///使用System.Type类
///通过System.Type类的非静态方法InvokeMember()方法可以创建一个在编译
///期间未知的类的实例,只有需要在调用的时候使用BindingFlags枚举量中的
///CreateInstance即可。例如
using System;
using System.Reflection;
class program
{
static void Main()
{
Assembly asse = Assembly.Load("wangjun");
Type type = asse.GetType("wangjun.wangjun");
object obj = type.InvokeMember(
null,
BindingFlags.CreateInstance,
null,
null,
new Object[0]);
Console.WriteLine(obj);
}
}
///通过以上的方法,几乎可以创建任何一种类或结构的实例。下面是两种特殊性况
///为了创建一个数组,必须调用System.Array类中的静态方法CreateInstance()
///为了创建一个委托对象,必须调用System.Delegate类中的CreateDelegate()方法
///通过System.Type类的非静态方法InvokeMember()方法可以创建一个在编译
///期间未知的类的实例,只有需要在调用的时候使用BindingFlags枚举量中的
///CreateInstance即可。例如
using System;
using System.Reflection;
class program
{
static void Main()
{
Assembly asse = Assembly.Load("wangjun");
Type type = asse.GetType("wangjun.wangjun");
object obj = type.InvokeMember(
null,
BindingFlags.CreateInstance,
null,
null,
new Object[0]);
Console.WriteLine(obj);
}
}
///通过以上的方法,几乎可以创建任何一种类或结构的实例。下面是两种特殊性况
///为了创建一个数组,必须调用System.Array类中的静态方法CreateInstance()
///为了创建一个委托对象,必须调用System.Delegate类中的CreateDelegate()方法
注意:我加载程序集时使用的是"wangjun" 字符串"wangjun"代表的是程序集的名称,是我在建立类库时在类库的项目中点右键属性在这个里面设置的名称,刚才加载的不是物理文件的名称,物理文件件的名称是"wangjun.dll",如果Assembly.Load()静态方法里面你如果添入物理名称的话,它会显示找不到文件 FileNotFond
来源:http://2sws.blog.163.com/blog/static/17910249200984345847/
类别:Asp.Net/C#/WCF 作者:转载 日期:2010-12-03 【评论:0】
相关文章
暂时没有评论!
发表留言
热门博文
- IE里Cookie跨域不能读取
- web服务因URL意外地以/**结束,请求格式无法识别
- 去掉隐藏asp.net编译出错aspxerrorpath错误参数
- 解决asp.net验证视图状态 MAC 失败
- 找不到System.Web.Script.Services.ScriptService
- 在aspx,ashx页面挂起线程执行
最新博文
- WCF利用限流(Throttling)控制并发访问[下篇]
- WCF利用限流(Throttling)控制并发访问[上篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[下篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[上篇]
- WCF基于ConcurrencyMode.Reentrant模式下的并发控制机制
- C#如何设置标记方法等为否决的不可用
随机博文
广告商赞助

