要用C#反射技术的话,首先得引入System.Reflection 命名空间,这个命名空间里的类,具有动态加载程序集、类型,动态调用方法、设置和取得属性和字段的值、可以获取类型和方法的信息的功能。
要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法。
1 Class MyClass 2 { 3 private int field; 4 public int Field 5 { 6 get 7 { 8 return this.field; 9 }10 set11 {12 this.field = value;13 }14 }15 }
如果有个这个类型的实例:
MyClass myObj = new MyClass();
我们要动态的为这个实例的属性Field赋值,那么得先得到这个实例的类型:
Type t=typeof(MyClass);另一种方法是:
Type t=myObj.GetType();只要我们得到了对象的类型那么我们就可以利用反射对这个对象“为所欲为”了,哈哈。
t.GetProperty("Field").SetValue(myObj,1,null);这样我们就为对象里的属性Field赋值了。如果把属性名和要赋的值写道配置文件里的话,我们就可以达到程序运行期间动态的为属性赋值了。
利用反射获取属性值的方法:
int propValue=Convert.ToInt32(t.GetProperty("Field").SetValue(myObj,null));好了,关于利用反射动态的为对象的属性赋值取值就到这里了。
(C#)利用反射动态调用类成员
使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下:
public object InvokeMember(
string name,
BindingFlags invokeAttr,
Binder binder,
object target,
object[] args
);
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c#
, 反射
, 方法
, 属性
, 类型
, 动态
, c# 反射
, 对象赋值c#
, 动态vbnet反射
, linq动态字段名赋值
, C#,反射
, 类属性赋值
, 反射技术
C#反射
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。