C# 如何根据指定实体类和字段名称查找字段

时间:2022-08-13 16:15:12
目的是把 

三层架构 里的model层 作为实体对象 以及 已知的字段名称 传入方法中,然后调用字段名称来获取字段对应的值。




Package1.Model.I_C_PC IcPcl = new Package1.Model.I_C_PC();

string str = ziduanming;




这个方法应该如何写?麻烦各位大侠指导一下.

10 个解决方案

#1


Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
            {
                MessageBox.Show(string.Format("{0}={1}",info.Name,info.GetValue(TEST.Property1,null)));
            }

#2


查看了其他 帖子说是可以通过反射进行查找

        public static object FindField(object container, string fieldName)
        {
            object obj = null;

            System.Reflection.BindingFlags bindingFlags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static;
            System.Reflection.FieldInfo field = container.GetType().GetField(fieldName, bindingFlags);
            if (field != null)
            {
                obj = field.GetValue(container);
            }


            return obj;
        }


但是我传model进这个方法后 这段代码不知道应该如何修改field都是null值

#3


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

想 请问下这里 Test 是指 我的model吗? GetValue(b, null) 这里的b是字段名是吗? 那

#4


其实就是C#中的反射。可以看一下反射相关内容。

#5


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

能详细 解释下吗

#6


该回复于2010-10-16 10:48:43被版主删除

#7


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

尝试过了。我对反射这个方法不熟。能有谁讲解下吗



老师带小朋友到山上玩,小明看到一条牛没有犄角,就问老师:“老师,老师,为什么这条牛没有犄角啊?” 
小强抢着回答:“因为它得病了”。 
老师说:“不对”。 
小伟说:“因为它跟别的牛格斗,把犄角斗没了”。 
老师说:“也不对”。 
“那是为什么呢?”小强问。 
“因为它是一头驴..”老师说。 

汗........ 
狂汗......

#8


顶............

#9


顶............

#10


没人吗

#1


Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
            {
                MessageBox.Show(string.Format("{0}={1}",info.Name,info.GetValue(TEST.Property1,null)));
            }

#2


查看了其他 帖子说是可以通过反射进行查找

        public static object FindField(object container, string fieldName)
        {
            object obj = null;

            System.Reflection.BindingFlags bindingFlags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static;
            System.Reflection.FieldInfo field = container.GetType().GetField(fieldName, bindingFlags);
            if (field != null)
            {
                obj = field.GetValue(container);
            }


            return obj;
        }


但是我传model进这个方法后 这段代码不知道应该如何修改field都是null值

#3


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

想 请问下这里 Test 是指 我的model吗? GetValue(b, null) 这里的b是字段名是吗? 那

#4


其实就是C#中的反射。可以看一下反射相关内容。

#5


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

能详细 解释下吗

#6


该回复于2010-10-16 10:48:43被版主删除

#7


引用 1 楼 wuyq11 的回复:
Type t = Test.GetType().GetProperty("Property1").GetValue(b, null).GetType();
foreach (PropertyInfo info in TEST.GetType().GetProperty("Property1").GetValue(TEST, null).GetType().GetProperties()) 
 ……

尝试过了。我对反射这个方法不熟。能有谁讲解下吗



老师带小朋友到山上玩,小明看到一条牛没有犄角,就问老师:“老师,老师,为什么这条牛没有犄角啊?” 
小强抢着回答:“因为它得病了”。 
老师说:“不对”。 
小伟说:“因为它跟别的牛格斗,把犄角斗没了”。 
老师说:“也不对”。 
“那是为什么呢?”小强问。 
“因为它是一头驴..”老师说。 

汗........ 
狂汗......

#8


顶............

#9


顶............

#10


没人吗