在网上查找了不少的资料,可以说大同小异,概念性的东西网上一搜一堆,今天把反射的东西整理了一下,供大家使用,我保证我这里是最全面的东西,当然也是基础的东西,在学好了这一切的基础上,大家可以学习反射的具体插件等应用,老鸟
就不用看了。首先我们建立一个类库,将它生成为HelloWorld.dll,
-
usingSystem;
-
-
namespaceWebtest
- {
-
-
publicinterfaceinterface1
- {
-
intadd();
-
- }
-
publicclassReflectTest:interface1
- {
-
-
publicStringWrite;
-
privateStringWritec;
-
-
publicStringWritea
- {
-
get
- {
-
returnWrite;
- }
-
set
- {
- Write=value;
- }
-
- }
-
-
privateStringWriteb
- {
-
get
- {
-
returnWritec;
- }
-
set
- {
- Writec=value;
- }
-
- }
-
-
publicReflectTest()
- {
-
this.Write="Write";
-
this.Writec="Writec";
- }
-
-
publicReflectTest(stringstr1,stringstr2)
- {
-
this.Write=str1;
-
this.Writec=str2;
-
- }
-
-
publicstringWriteString(strings,intb)
- {
-
return"欢迎您,"+s+"---"+b;;
- }
-
-
publicstaticstringWriteName(strings)
- {
-
return"欢迎您光临,"+s;
- }
-
-
publicstringWriteNoPara()
- {
-
return"您使用的是无参数方法";
- }
-
-
privatestringWritePrivate()
- {
-
return"私有类型的方法";
- }
-
-
-
publicintadd()
- {
-
return5;
- }
- }
- }
-
- 然后,建立再建立一个项目引入该HelloWorld.dll
-
usingSystem;
-
usingSystem.Threading;
-
usingSystem.Reflection;
-
classTest
- {
-
delegatestringTestDelegate(stringvalue,intvalue1);
-
staticvoidMain()
- {
-
-
Assemblyt=Assembly.Load("HelloWorld");
-
foreach(Typeaaaint.GetTypes())
- {
-
- }
- Module[]modules=t.GetModules();
-
foreach(Modulemoduleinmodules)
- {
-
模块的名字本例为"HelloWorld.dll"
-
- }
-
-
-
下面一个效果
-
Typea=typeof(Webtest.ReflectTest);
-
-
-
string[]bb=...{"aaaa","bbbbb"};
-
-
例,后面的bb为有参构造函数的参数
-
objectobj=Activator.CreateInstance(a,bb);
-
- MethodInfo[]miArr=a.GetMethods();
-
foreach(MethodInfomi0inmiArr)
- {
-
- }
-
MethodInfomi=a.GetMethod("WriteString");
-
object[]aa=...{"使用的是带有参数的非静态方法",2};
-
strings=(string)mi.Invoke(obj,aa);
-
MethodInfomi1=a.GetMethod("WriteName");
-
String[]aa1=...{"使用的是静态方法"};
-
strings1=(string)mi1.Invoke(null,aa1);
-
MethodInfomi2=a.GetMethod("WriteNoPara");
-
strings2=(string)mi2.Invoke(obj,null);调用
-
MethodInfomi3= a.GetMethod("WritePrivate",BindingFlags.Instance|
- BindingFlags.NonPublic);
-
strings3=(string)mi3.Invoke(obj,null);用
-
- PropertyInfo[]piArr=a.GetProperties(BindingFlags.Instance
- |BindingFlags.NonPublic|BindingFlags.Public);
-
foreach(PropertyInfopiinpiArr)
- {
-
- }
-
PropertyInfopi1=a.GetProperty("Writea");
-
-
-
PropertyInfopi2=a.GetProperty("Writeb",
- BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public);
-
pi2.SetValue(obj,"Writeb",null);
-
-
FieldInfofi1=a.GetField("Write");
-
- ConstructorInfo[]ci1=a.GetConstructors();
-
foreach(ConstructorInfociinci1)
- {
-
- }
-
ConstructorInfoasCI=a.GetConstructor(newType[]...{
-
typeof(string),typeof(string)});
-
- Webtest.interface1obj1=
-
(Webtest.interface1)t.CreateInstance("Webtest.ReflectTest");
- Webtest.ReflectTestobj2=
-
(Webtest.ReflectTest)t.CreateInstance("Webtest.ReflectTest");
-
-
foreach(Typettint.GetTypes())
- {
-
if(tt.GetInterface("interface1")!=null)
- {
- Webtest.interface1obj3= (Webtest.interface1)Activator.CreateInstance(a);
-
- }
- }
-
TestDelegatemethod= (TestDelegate)Delegate.CreateDelegate(typeof(TestDelegate),obj,
-
"WriteString");
-
-
Console.Write(method("str1",2));
- Console.Read();
- }
- }
在这里我把我们常用的方法,属性,等全部整理了出来,大家不要嫌弃乱,静下心来,自己按照我的分隔一部分一部分的来,保证你对反射的学习,会事半功倍.当然有关于其方法我会继续补充,想了这么些就先写下来吧.
分享到:
相关推荐
C#反射实例C#反射实例讲解讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解
C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结
C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例
C#各种反射方法源码性能比较,包括:普通反射、接口调用、委托调用
C#net反射实现访问类中的私有变量或者方法
是一个 关于c#反射的几乎最好最全面的例子。
c# 反射测试 demo
C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象
c#反射 c#反射实例 开发环境VS2010 c#反射代码
是关于c#的一个反射举例,希望大家对C#的反射能够一个很好的认识,帮助大家更请简单的理解其中的意思
C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子
C#反射学习,自己的学习笔记,涵盖了动态加载程序,每一小结以虚线结束,认真看完也就差不多学完了反射主要的类
C#反射示例 自己写的一个反射示例,动态生成方法
C# 反射技术应用 反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个...
C# 通过反射调用com组件,封装了几个简单的方法方便使用反射调用com。 var obj=new ComObj("excel.application"); obj["Visible"]=true; obj. InvokeMethod("Application.Workbooks.Open", fileName);
最基本的c# 反射 例子 示例 demo
反射是一种允许用户获得类信息的C#功能,Type对象映射它代表的底层对象; 在.Net 中, 一旦获得了Type对象,就可以使用GetMethods()方法获取此类型支持的方法列表;该方法的两种形式: MethodInfo [] GetMethods() ...
C#反射机制源码学习.rar C#反射机制源码学习.rar C#反射机制源码学习.rar
C#反射动态创建菜单
c# 反射(Reflection)例子