反射技术示例

转载 2007年09月22日 00:50:00
1.2 反射技术示例 
       
下面是反射技术的示例,我们可以在程序去得时动态实例化对象,获得对象的属性,并调用对象的方法。
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ReflectionDemo
{
    public class HelloWorld
    {
        private string strName = null;
        public HelloWorld(string name)
        {
            strName = name;
        }
        public HelloWorld()
        {
        }
        public string Name
        {
            get
            {
                return strName;
            }
        }
        public void SayHello()
        {
            if (strName == null)
            {
                System.Console.WriteLine("Hello World");
            }
            else
            {
                System.Console.WriteLine("Hello World,"+strName);
            }
        }
 
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
 
namespace ReflectionDemo
{
        class Program
        {
            static void Main(string[] args)
            {
                System.Console.WriteLine("列出程序集中的所有类型");
                Assembly a = Assembly.LoadFrom ("ReflectionDemo.exe");
                Type[] mytypes = a.GetTypes( );
 
                foreach (Type t in mytypes)
                {
                  System.Console.WriteLine ( t.Name );
                }
                System.Console.ReadLine ( );
 
                System.Console.WriteLine ("列出HellWord中的所有方法" );
                Type ht = typeof(HelloWorld);
                MethodInfo[] mif = ht.GetMethods();
                foreach(MethodInfo mf in mif)
                {
                  System.Console.WriteLine(mf.Name);
                }
                System.Console.ReadLine();
 
                System.Console.WriteLine("实例化HelloWorld,并调用SayHello方法");
                Object obj = Activator.CreateInstance(ht); //调用无参数构造函数
 
                string[] s = {"zhenlei"};
                Object objName = Activator.CreateInstance(ht, s); //调用参数构造函数
 
                //BindingFlags flags = (BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Static|BindingFlags.Instance|BindingFlags.DeclaredOnly);
                MethodInfo msayhello = ht.GetMethod("SayHello");
                msayhello.Invoke(obj,null);
                msayhello.Invoke(objName,null);
                System.Console.ReadLine();
 
                }
            }
    }
 

相关文章推荐

动态网站开发技术学习2:VS 2010制作作第一个简单示例网站

制作一个简单示例网站的步骤:         一,启动VS 2010开发环境,选择菜单中的“文件”,选择其中的“新建”,再选择“网站”,会弹出”新建网站“对话框。         二,在“...

HTTP长连接实现“服务器推”的技术快速入门及演示示例

在我的印象里HTTP是一种“无状态的协议”,也就是不知道以前请求的历史,无法保留上一次请求的结果。 Cookie的诞生,弥补了这个不足,也就是可以通过本地持久化请求数据来记录上次请求的环境。但这个没有...

com技术组件第7章,用vs2005编译示例代码,com注册不成功。

com第7章,编译问题,解决方案

【技术类】【且听我说“镶嵌数据集”】10、镶嵌数据集影像管理与应用示例(完)

本篇列举典型示例描述镶嵌数据集影像管理流程及应用,具体包括利用镶嵌数据集管理原始影像,利用镶嵌数据集管理DEM产品,栅格函数模板实现影像渲染。      (1)镶嵌数据集管理原始影像 ...

技术应答示例2

项目名称: 工程名称:民航新疆应急指挥中心应急指挥及决策支持系统设计、施工及软件开发工程 一 标 段:民航新疆应急指挥中心应急指挥及决策支持系统设计及 软件开发工程 建设单位:民航新疆管理局 ...

PHP分页技术的代码和示例

http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2011/1208/9457.html 分页是目前在显示大量结果时所采...

DHTML技术综合演示---示例:表格创建2

DHTML技术综合演示---示例:表格创建2 table{ border:#00ffff solid 2px; width:500px; border-collapse:collaps...

网络扫描技术揭秘读书笔记2--扫描器中公用编程示例(2)

1. 多线程的局限性和使用方式 (1)与扫描器开发相关的程序大多是多线程的。Windows下多线程程序需要考虑的问题: (1).运用多线程并不是绝对地能提高整个程序的性能。例如,一个应用如果可以拆分成...

HTTP长连接实现“服务器推”的技术快速入门及演示示例

转自: http://blog.csdn.net/xxd851116/article/details/10022015
  • lsblsb
  • lsblsb
  • 2014年11月07日 10:56
  • 585

Canvas与Image互相转换示例以及利用该技术实现微信长按自动识别二维码功能

Canvas与Image互相转换示例以及利用该技术实现微信长按自动识别二维码功能 现在扫描二维码已经很普遍,微信扫一扫即可,但是如果二维码是在自己的手机上呢?那就要用到微信里的一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:反射技术示例
举报原因:
原因补充:

(最多只允许输入30个字)