首页 >国际 > > 正文

Net 如何获取私有属性

博客园 2023-05-24 18:28:03

.Net的私有属性、成员变量、方法,都可以通过反射获取调用,当然正常我们不会这么操作


(资料图片)

此章只是做一个反射科普,像EFCore从数据库取值的底层框架就是通过反射直接操作私有的成员变量,而不是方法。

直接上例子,先定义一个类

public class TenantModel    {        public int Id { get; init; }//属性,未定义成员变量会自动生成        public string Name { get; set; }//属性        private string password;//成员变量        public string Password//属性        {            private get //方法(属性里的get;set;均为方法,或者自己定义一个方法测试)            {                return password;            }            set            {                if (value.Length < 6)                    throw new Exception("密码需要大于6位");                password = value;            }        }    }

然后利用反射,获取到私有的password信息

1)通过对象进行反射

var te = new TenantModel()            {                Id = 1,                Name = "kxy",                Password = "1234567"            };            Type type = te.GetType();            //te.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);//获取所有私有方法            MethodInfo func1 = type.GetMethod("get_Password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有方法            var str = func1.Invoke(te, null).ToString();//执行方法            FieldInfo field = type.GetField("password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有成员变量            string pwd = field.GetValue(te)?.ToString();//取值            field.SetValue(te, "123");//赋值,直接操作成员变量,可以跳过验证

这样就简单实现了一个反射读取私有信息的案例,当然还可以通过程序集反射

2)通过程序集进行反射(因为实例化)

反射也是通过构造函数实例化的,默认为无参,也可以带参,为了展示,我们多定义一个带参构造函数

public TenantModel(int id,string name,string password)        {            Id = id;            Name = name;            Password = password;        }

然后,反射代码如下:

Assembly assembly = Assembly.Load("ServerSignalR");//反射入口,从程序集加载,ServerSignalR为程序集名称            Type type = assembly.GetType("ServerSignalR.Models.TenantModel");//基于类的完整名称找出类型            TenantModel te = Activator.CreateInstance(type, new object[] { 1, "kxy", "1234567" }) as TenantModel;//实例化            MethodInfo func1 = type.GetMethod("get_Password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有方法            var str = func1.Invoke(te, null)?.ToString();//执行方法            FieldInfo field = type.GetField("password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有成员变量            string pwd = field.GetValue(te)?.ToString();//取值            field.SetValue(te, "123");//赋值,直接操作成员变量,可以跳过验证

也可以选定dll文件

Assembly assembly = null;            //注意区分开发和生产环境            if (_env.IsDevelopment())            {                assembly = Assembly.LoadFrom("bin//Debug//net5.0//ServerSignalR.dll");//dll的路径            }            else            {                assembly = Assembly.LoadFrom("ServerSignalR.dll");//dll的路径            }            Type type = assembly.GetType("ServerSignalR.Models.TenantModel");//基于类的完整名称找出类型            TenantModel te = Activator.CreateInstance(type, new object[] { 1, "kxy", "1234567" }) as TenantModel;//实例化            MethodInfo func1 = type.GetMethod("get_Password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有方法            var str = func1.Invoke(te, null)?.ToString();//执行方法            FieldInfo field = type.GetField("password", BindingFlags.NonPublic | BindingFlags.Instance);//获取私有成员变量            string pwd = field.GetValue(te)?.ToString();//取值            field.SetValue(te, "123");//赋值,直接操作成员变量,可以跳过验证

至此,完毕!!!

感谢关注

上一篇:讯息:开心小菜园种出“向往的生活” 下一篇:最后一页
x
推荐阅读

Net 如何获取私有属性

2023-05-24

讯息:开心小菜园种出“向往的生活”

2023-05-24

5月24日黄山市场固体环氧树脂清淡

2023-05-24

天天新资讯:珠海免税旗下拱北免税店完成升级改造

2023-05-24

中国海警舰艇编队5月24日在我钓鱼岛领海内巡航

2023-05-24

世界今热点:优步(UBER.US)与谷歌(GOOGL.US)旗下Waymo达成合作 提供无人驾驶服务

2023-05-24

世界时讯:华勤技术过会:今年IPO过关第117家 中金公司过4单

2023-05-24

骑士卡加油怎么用支付宝付款_骑士卡加油怎么用|每日信息

2023-05-24

全球时讯:侮辱性极强!武汉三镇:队内处罚阿齐兹1美金 期望中国足坛平平安安

2023-05-24

【报资讯】618大促火爆开启 京东20周年3C礼盒低至五折

2023-05-24

天天热推荐:资产配置系列(九):固收+的多策略探索

2023-05-24

大烨智能(300670)盘中异动 股价振幅达10.45% 上涨7.16%(05-24)

2023-05-24

【天天播资讯】【图片新闻】高台县南华镇以“公司+合作社+基地”等多种模式发展规模经营 助力乡村振兴

2023-05-24

杭州将新增4座高铁站、4条高铁线!_全球热推荐

2023-05-24

世界速讯:66家房企抢一宗地 杭州第四批土拍揽金138亿元

2023-05-24

天天讯息:约翰-埃尔坎:尤文处于艰难时刻,但我们总会在逆境中变得更强大

2023-05-24

环球今日报丨阿里健康2022财年总收入同比增长30.1% 扭亏为盈5.34亿元

2023-05-24

魔斑_关于魔斑简述 全球今热点

2023-05-24

天天微动态丨新乡师范学院录取分数线2022_新乡师范学院

2023-05-24

热门看点:给公司员工发纪念品选什么好(给优秀员工发什么纪念品好)

2023-05-24

世界实时:韩国市民团体贴海报质问尹锡悦:“日本福岛核污水,真的要喝吗?”

2023-05-24

太原立四麻将游戏_太原立四麻将|世界新视野

2023-05-23

全球头条:何姓排名全国第几位_何姓

2023-05-23

约基奇:恩比德值得MVP 他整个赛季都在非常强硬地打球

2023-05-23

土耳其:“中转站”开启绿色攻略

2023-05-23

环球焦点!颐丰食品聘任卢树飞为公司财务负责人 2022年公司亏损151.85万

2023-05-23

天天观点:我们对二维材料的力学了解多少

2023-05-23

她怎么组词_她的组词 快资讯

2023-05-23

500万人次点赞!发现杨凌之美!

2023-05-23

世界新动态:“杭州巨响”冲上热搜!网友:咣当一声,门窗、房子都在震!浙江地震局、消防部门回应

2023-05-23

《工业领域数据安全标准体系建设指南(2023版)》(征求意见稿)-环球观焦点

2023-05-23

协调停车位,安装挡车器,这条背街小巷路宽了道顺了 世界独家

2023-05-23

世界消息!同步导学与优化训练六年级下册答案数学2022 同步导学与优化训练六年级下册答案

2023-05-23

秦三世简介_秦三世

2023-05-23

冷空气影响新疆内蒙古等地 华南沿海有分散性强降水 全球简讯

2023-05-23

央视特别节目《蓝色粮仓》摄制组到防城区取景拍摄

2023-05-23

90后没逃过白酒的“真香定律” 世界今日讯

2023-05-23

【聚焦2023数博会】抢抓“东数西算”机遇 扬帆数字经济“蓝海”

2023-05-23

以高质量科普推动经济社会高质量发展|天天新资讯

2023-05-23

天天亮点!美国7个州与政府达成协议 以节省水资源为条件换取联邦资金

2023-05-23

王者荣耀如何发送分路段位 王者荣耀的分路段位怎么发出来_世界速看料

2023-05-23

高盛:对美国经济衰退的担忧日益加剧 可能会打压油价

2023-05-23

信用卡逾期无力偿还该怎么做?信用卡2个月逾期会黑名单吗? 今日看点

2023-05-23

刚刚,“巅峰使命”珠峰科考登顶科考队出发开始冲顶

2023-05-23

发票商品编码查询系统_发票商品编码查询 每日简讯

2023-05-23

屎酒红色_屎酒

2023-05-23

胡可的前男友是谁 胡可前夫

2023-05-23

全球播报:颜楷最有活力的是什么帖

2023-05-23

简讯:韩东君个人资料简介及_韩东君个人资料

2023-05-22

长沙市口腔医院晚上上班吗_长沙市口腔医院价目表

2023-05-22

四川向民间资本推介重点领域项目129个、总投资近1400亿元|全球简讯

2023-05-22

不喜欢欠“人情”的三大生肖,宁愿自己吃点亏,也不愿麻烦别人!

2023-05-22

国家金融监督管理总局:保险业偿付能力充足率保持在合理区间|当前快报

2023-05-22

百万医疗都保什么?怎么买?|全球热议

2023-05-22

怀仁:推进校企合作赋能医药产业

2023-05-22

3连板柯力传感:公司主营业务、生产经营情况以及经营环境与前期披露信息相比未发生重大变化

2023-05-22

新中港05月22日涨停分析

2023-05-22

国轩高科(002074.SZ):目前已初步形成五大材料基地-天天观点

2023-05-22

5·21国际茶日:冰岛茶,在戛纳与世界共品 世界最新

2023-05-22

天天讯息:世茂能源: 敬的公司一季度营业收入同比下降8.66%,详见公司相关定期报告

2023-05-22

当日快讯:力量钻石:已设立海南力量公司,开始培育钻石下游加工和零售业务 每日速讯

2023-05-22

焦点热议:奥迪a8_8 2越狱

2023-05-22

天天最新:午盘:上证指数涨0.11%,深证成指涨0.12%,创业板指跌0.10%

2023-05-22

何赛飞回应“痛斥梅花奖” 批的是行业乱象!|当前速讯

2023-05-22

翻拍韩国电影,本月高分催泪大片,感动到哭!

2023-05-22

五菱宏光MINI EV最高优惠1.3万:全系2.98万起

2023-05-22

观焦点:好听可爱的女性网名_好听可爱的女孩名字

2023-05-22

北京:首个学生营养餐行业标准推广实施-天天微动态

2023-05-22

长沙:100个房产项目完成交房交证 5万余户办结不动产登记权证_全球聚看点

2023-05-22

“音乐+旅游”助文旅破圈_环球微资讯

2023-05-22

赋能女性创业 播种商业向善

2023-05-22

世界今日讯!清晨,淄博多人被拘!现场曝光……

2023-05-22

环球新资讯:0字开头股票属于哪类_股票0开头的是什么的

2023-05-22

第四届南京老山国际文化旅游节开幕_全球快资讯

2023-05-22

8000万欧!切尔西报价尤文第一射手,波切蒂诺新选择, 不要卢卡库

2023-05-22

魔女候补生_关于魔女候补生简述

2023-05-22

铝和氢氧化钠的反应方程式_铝和氢氧化钠|今日快讯

2023-05-21

全球视点!【风口解读】常熟汽饰中标19亿元乘用车立柱总成、侧围总成大单,超去年营收一半

2023-05-21

会说话的都是什么鸟_会说话的鸟是什么鸟简介介绍

2023-05-21

新天地:258.18万股限售股5月25日解禁上市

2023-05-21

当前快报:18.38万起 B级豪华SUV新红旗HS5长春马拉松上市

2023-05-21

2023文科就业前景最好的十大专业 都有哪些

2023-05-21

最资讯丨河沙可以种花吗 河沙适不适合种植花卉呢

2023-05-21

全球微动态丨山东五莲县:绿色颜值转为金色价值

2023-05-21

美国约30吨硝酸铵运输途中丢失:或从车厢中泄漏 可引发爆炸-天天精选

2023-05-21

贫困证明怎么开-最新资讯

2023-05-21

《塞尔达传说王国之泪》碎岩剑怎么合成 全球热闻

2023-05-21

解压神器!青沼英二爱玩《健身环大冒险》舒缓压力

2023-05-21

《云南低碳旅游与全价值链可持续发展行动白皮书》发布_环球快播报

2023-05-21

初二英语下册:Unit 6 句型转换专项训练 焦点快播

2023-05-21

非企业法人指的是什么_非企业法人是什么意思_全球独家

2023-05-21

马赫雷斯生涯第5次夺得英超冠军,为非洲球员首位

2023-05-21

事业单位文员工作计划(通用4篇) 世界热点评

2023-05-21

衡阳配资群-衡水配资炒股

2023-05-20

2-1!世界第3拖延比赛染黄,石宇奇不辱使命,中日重回同一起跑线

2023-05-20

全球今热点:汽车报道:商务部:新增20个地区开展二手车出口

2023-05-20

当日快讯:上海市科委主任:制定专门政策举措凝聚社会资本,关注硬科技早期创业

2023-05-20

张生记 正大广场店_全球观天下

2023-05-20

沙湾市地理位置_沙湾 香港特区地名

2023-05-20

【世界热闻】修改hosts文件后果_修改hosts文件有什么用

2023-05-20