反射 学习用例

原创 2007年09月19日 15:02:00

第一步:新建一个类库项目,命名“ReflectionExample” ,代码:

using System;
namespace ReflectionExample
{
    
public class HelloWorld
    {
        
string myName = null;
        
public HelloWorld(string name)
        {
            myName 
= name;
        }
        
public HelloWorld()
            : 
this(null)
        { }
        
public string Name
        {
            
get
            {
                
return myName;
            }
        }
        
public void SayHello()
        {
            
if (myName == null)
            {
                System.Console.WriteLine(
"Hello World");
            }
            
else
            {
                System.Console.WriteLine(
"Hello," + myName);
            }
        }
    }
}

编译,生成一个ReflectionExample.dll文件.

第二步:新建一个项目,命名“Reflection”,添加引用“ReflectionExample.dll”

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Reflection;

namespace ReflectionExample
{
    
class Class1
    {
        
//[STAThread]
        static void Main(string[] args)
        {
            System.Console.WriteLine(
"列出程序集中的所有类型");
            Assembly a 
= Assembly.LoadFrom("ReflectionExample.dll");
            Type[] mytypes 
= a.GetTypes();

            
foreach (Type t in mytypes)
            {
                System.Console.WriteLine(t.Name);
            }
            System.Console.ReadLine();
            Console.WriteLine(
"ManifestModule,获取该程序清单的模块:{0}", a.ManifestModule);
            Console.ReadLine();
            Console.WriteLine(
"CodeBase,获取最初指定程序集的位置:{0}", a.CodeBase);
            Console.ReadLine();
            Console.WriteLine(
"Entry point,获取此程序集的入口点:{0}", a.EntryPoint);
            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 bojName 
= 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(bojName, 
null);
            System.Console.ReadLine();
        }
    }
}

运行结果是:

结果

 

相关文章推荐

反射学习笔记含代码

  • 2012年05月08日 20:00
  • 7KB
  • 下载

Java反射学习总结一(基础篇)

1.使用反射的第一步, 找到class对象(1.Class.forName(); 2.object.class.newInstance(); 3.object.getClass()) //获取某个类...

Java反射机制的学习

  • 2012年11月29日 21:25
  • 40KB
  • 下载

学习反射的一个好实例

  • 2008年12月03日 15:54
  • 5KB
  • 下载

通过DVWA学习反射型XSS漏洞

XSS,全称cross-site scripting,是用于攻击Web客户端而不是服务器端,其最大的特点是能把恶意的JS或HTML代码注入到用户浏览的网页上。而XSS漏洞的存在,主要是由于Web应用程...
  • SKI_12
  • SKI_12
  • 2017年03月04日 22:35
  • 792

java反射学习

  • 2012年05月09日 00:27
  • 22KB
  • 下载

Java反射机制的学习

  • 2012年06月06日 13:41
  • 38KB
  • 下载

java学习之路 之 反射机制综合练习题、动态代理实例

在上一篇博文中我们已经进行了反射机制的习题练习,这里我们在做一个考察比较全面的练习,如下: 写一个类ReflectUtil类, 类中写一个静态方法Object methodInvoker(Strin...

反射学习资料

  • 2013年04月23日 23:05
  • 823KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:反射 学习用例
举报原因:
原因补充:

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