您的位置:首页 > 编程语言 > C#

C#中 反射中的Assembly(装载程序集):

2016-10-27 22:54 337 查看
反射中的Assembly(装载程序集):可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。

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))
{
....
}
..........
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: