C#中 反射中的Assembly(装载程序集):
2016-10-27 22:54
337 查看
反射中的Assembly(装载程序集):可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。
Assembly.Load(assemblyName).CreateInstance(strongClassName);
反射用法:利用GetType()动态取实体属性:
GetType():获取当前实例的System.Type.
String assemblyName = @"NamespaceRef";//命名空间 String strongClassName = @"NamespaceRef.China";//需要动态生成的类交China
Assembly.Load(assemblyName).CreateInstance(strongClassName);
反射用法:利用GetType()动态取实体属性:
GetType():获取当前实例的System.Type.
现在有两个类:Student 和 StudentDTO如下: public class Student { public Student() { } public virtual string Id { get; set; } public virtual string StudentNo { get; set; } public virtual string Name { get; set; } }
public class StudentDTO { public StudentDTO() { } public virtual string Id { get; set; } public virtual string StudentNo { get; set; } public virtual string Name { get; set; } public virtual string ClassId { get; set; } 。。。 }
使用GetType()实现实体属性之间赋值: foreach (var item in student.GetType().GetProperties()) //返回Student的所有公共属性 { var value = item.GetValue(student, null); //返回属性值 var setobj = studentDTO.GetType().GetProperty(item.Name); //搜索具有指定属性名称的公共属性 if (value != null && setobj != null) { setobj.SetValue(studentDTO, value, null); } }
技巧:把方法的参数设置成object类型,就可以一个方法处理多个类型的数据,如下: public void TypeDemo(object parameter) { if(parameter.GetType() == typeof(OtherClass)) { .... } if(parameter.GetType() == typeof(OtherClass1)) { .... } if(parameter.GetType() == typeof(OtherClass2)) { .... } .......... }
相关文章推荐
- C#_Assembly-Reflection_程序集与反射
- C#_Assembly-Reflection_程序集与反射 练习<二> 记事本插件编写
- c#使用反射加载程序集Assembly。load()使用全过程
- C#_Assembly-Reflection_程序集与反射 练习<一> 记事本插件编写
- 关于反射中Assembly.Load("程序集").CreateInstance("命名空间.类")与Activator.CreateInstance()方法
- C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法介绍
- C#中使用反射显示程序集的所有类型和属性
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- C#中使用反射显示程序集的所有类型和属性(转贴)
- C# 引用程序集 面向的是另一个处理器,而不是应用程序 警告 Referenced assembly 'TypeInfo.dll' targets a different processor than the application
- 《CLR via C#》第22章 程序集加载和反射 读书笔记
- 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
- C#反射区别(Assembly.Load及Assembly.Load.CreateInstance)
- C#2.0学习8--反射与程序集
- C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法介绍
- [转]C#程序集Assembly学习随笔(第一版)_AX
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- 使用C#的反射机制(AssemblyInfo)时遇到的问题
- C#2.0学习--反射与程序集
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍