VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 665|回复: 4

超难问题(对我),高手请进

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-28 13:00:01 | 显示全部楼层 |阅读模式
怎么把一个实体类中所有的属性读出来,而且把属性的值也读出来?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-23 20:30:02 | 显示全部楼层
用反射吧
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-2-23 23:30:01 | 显示全部楼层
利用反射,请参考:

string sClass = CCConvert.GetRequsetQueryString("ClassName");
                        string sMethodName = "GetReports";
                        //得到类
                        Type  oType =  System.Type.GetType("CallCenter.Report.Class."+sClass);
                        if(oType == null )
                        {
                                Response.Write("类:"+sClass +"不存在!");
                                return;       
                        }

                        //实现化
                        object oInst =  Activator.CreateInstance(oType);
                        if(oInst ==null)
                        {
                                        Response.Write("类:"+sClass +"不存在!");
                                        return;       
                        }
                        //得到方法
                        MethodInfo  oMethod = oType.GetMethod(sMethodName);

                        if(oMethod ==null)
                        {
                                Response.Write("方法:"+ sMethodName +"不存在!");
                                return ;
                        }
                        int iParamsCount = oMethod.GetParameters().Length;
                        string sParams = CCConvert.GetRequsetQueryString("Params");
                        string[] ary = sParams.Split(',');
                        if(ary.Length !=iParamsCount)
                        {
                                Response.Write(String.Format("传入的参数的个数{0}不等于该方法{1}实际的参数个数{2},请检查",ary.Length.ToString(),oMethod.Name,iParamsCount.ToString()));
                                return;
                        }
                        //得到属性
                        PropertyInfo Pro =  oType.GetProperty("Title");
                       


                        this.sTitle = Pro.GetValue(oInst,null).ToString();
                       
                        FieldInfo   fldFileName = oType.GetField("sExcelFileName");
                       
                       

                        string sHTML = oMethod.Invoke(oInst,BindingFlags.Public,Type.DefaultBinder,ary,null).ToString();
                        string sFileName = fldFileName.GetValue(oInst).ToString();
                        //Response.Write(sFileName);
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-4 12:30:02 | 显示全部楼层
反射
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-4 20:30:01 | 显示全部楼层
Class1 class1 = new Class1();
        PropertyInfo[] arrayinfo = class1.GetType().GetProperties();
        foreach (PropertyInfo info in arrayinfo)
        {
            object value = info.GetValue(class1, null);
        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表