反射获取对象属性值和字段值

ps:没什么技术含量,直接贴代码

public T GetFieldValue<T>(object obj, string name)
        {
            Type type = obj.GetType();
            System.Reflection.FieldInfo fieldInfo = type.GetField(name);
            if (fieldInfo == null)
            {
                throw new MissingFieldException(name);
            }

            object objectValue = fieldInfo.GetValue(obj);
            return (T)objectValue;
        }

        public T GetValue<T>(object obj,string name)
        {
           Type type = obj.GetType();
           System.Reflection.PropertyInfo property = type.GetProperty(name);
           if (property == null)
           {
               throw new MissingFieldException(name);
           }

           object objectValue = property.GetValue(obj, null);
           return (T)objectValue;
        }

调用方法

string name = this.GetFieldValue<string>(person,"Name");
int age = this.GetValue<int>(person, "Age");
时间: 2024-12-28 18:25:13

反射获取对象属性值和字段值的相关文章

C#利用反射获取对象属性值

public static string GetObjectPropertyValue<T>(T t, string propertyname){     Type type = typeof(T); PropertyInfo property = type.GetProperty(propertyname); if (property == null) return string.Empty; object o = property.GetValue(t, null); if (o == n

第五课 JAVA反射获取对象属性和方法

package com.hero; import java.lang.reflect.Field; public class TestReflction5 { public static void main(String[] args) { Hero h =new Hero(); //使用传统方式修改name的值为gareen h.name = "gareen"; try { //获取类Hero的名字叫做name的字段 Field f1= h.getClass().getField(&

第六课 JAVA反射获取对象属性和方法(通过配置文件)

Service1.java package reflection; public class Service1 { public void doService1(){ System.out.println("业务方法1"); } } Service2.java package reflection; public class Service2 { public void doService2(){ System.out.println("业务方法1"); } } s

Java反射获取对象VO的属性值(通过Getter方法)

有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个Excel导出的工具类,导出的批量数据是以List类型传入的,List里的对象自然每次都不同,这取决于需要导出什么信息. 为了使用方便,将对象的属性名与属性值存于Map当中,使用时就可以直接遍历Map了. 此次的思路是通过反射和Getter方法取得值,然后记录在一个Map当中. Kick start

泛型约束和利用反射修改对象属性的值

周日了都,昨天休息了一天,今天想想得敲敲代码练习一下,如下关于泛型约束和利用反射修改对象属性的值的, 都挺简单的,呵呵,但时间一长,不经常使用还容易忘记在此就当记录一下了, 首先泛型代码一般是如下的情形: 加了泛型约束,只允许引用类型并且是只能是无参数的构造函数的类型才能传入,也就是不允许给类构造参数传递实参,否则将报错. 错误 1 “XXXXXX.pros”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法“ 1 public static T GetObject<T>(T

c# 如何通过反射 获取\设置属性值

c# 如何通过反射 获取\设置属性值 //定义类public class MyClass{public int Property1 { get; set; }}static void Main(){MyClass tmp_Class = new MyClass();tmp_Class.Property1 = 2;Type type = tmp_Class.GetType(); //获取类型System.Reflection.PropertyInfo propertyInfo = type.Get

EL表达式获取对象属性的原理

EL表达式获取对象属性的原理是这样的:以表达式${user.name}为例EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值. 所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法. 其实你要了解EL表达式的运行原理,它其实后台也对应的Java代码,它会先将你EL表达式中的对象属性的首字符大写,拼成getXX()方法,然后利用

JS获取对象“属性和方法”的方法

平时在写的代码过程中,经常会遇到对对象Object的数据处理.而在对对象的数据处理中,操作最频繁的是“数据引用”.“值的修改”.“获取关键字(属性)”.平时最烦的也是“获取关键字”,经常忘记怎么去获取,这里做一下整理. 既然要"获取关键字",那么得首先有一个对象才行.创建对象的方式很多,我自己惯用的方式有三种: 1.通过原始构造函数 new Object();创建一个对象,然后赋值: var testObj= new Object(); testObj.name = "sha

java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包

首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; import java.io.Serializable; public class Creature<T> implements Serializable { private char gender; public double weight; private void breath() { Syste