.NET反射的简单示例(2)
(3)namespace consoleassemblytest//该项目添加了对(1)的引用
{
class program
{
static void main(string[] args)
{
assembly assembly = assembly.loadfrom(@"e:classlibrarysomesports
bindebugclasslibrarysomesports.dll");
type[] types = assembly.gettypes();
console.writeline("get type from classlibrarysomesports.dll:");
for (int i = 0; i < types.length; i++)
{
console.writeline(types[i].name);
}
//使用getconstructor()方法获取对应类型的构造器,从而构造出该类型的对象
console.writeline("use method getconstructor():");
constructorinfo ci = types[0].getconstructor(new type[0]);
classlibrarysport.sport sport = (classlibrarysport.sport)ci.invoke(new object[0]);
console.writeline(sport.getname() + " has " + sport.getduration());
//使用activator.createinstance()方法构造出该类型的对象
//使用assembly.createinstance()返回为null,??
console.writeline("use method createinstance():");
classlibrarysport.sport sport1 = (classlibrarysport.sport)
activator.createinstance(types[0]);
console.writeline(sport1.getname() + " has " + sport1.getduration());
//反射指定类型中的名称为“getduration”的方法,通过invoke()方法执行该方法
object objsport = activator.createinstance(types[0]);
methodinfo method = types[0].getmethod("getduration");
object o = method.invoke(objsport, new object[0]);
console.writeline(o as string);
console.read();
}
}(来源 www.iocblog.net)
}
= = = = = == = == = == = == = == = == = == = == = == = == = == = ==
output:
get type from classlibrarysomesports.dll:
football
use method getconstructor():
football has four 15 minute quarters
use method createinstance():
football has four 15 minute quarters
four 15 minute quarters
http://www.cnblogs.com/kissknife/archive/2006/08/13/475717.html
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。