首页 > 其他分享 >.Net 反射的学习

.Net 反射的学习

时间:2024-03-09 18:22:57浏览次数:21  
标签:反射 name 获取 学习 item user Net id types

// 反射
// 一切从 type 开始 2 种拿到 type 的方式
// 作用:动态的操作对象  获取属性 方法 特性
// 1. 拿到对象的 type
// typeof(类);
// 2. 拿到实例化之后的对象的  type 
var user = new User();
user.name = "zhansan";
var types = user.GetType();
// GetProperties() 获取所有的属性 GetProperty("id") 获取某个属性
types.GetProperties().ToList().ForEach(item => {
    var name = item.name;
    var id = item.id; // item.GetValue(user);
});  // 获取此对象的所有属性 并且遍历这些属性 然后使用 GetValue 获取这些属性的值
// 获取方法 GetMethod() 获取单个方法 GetMethods() 获取所有的方法
// 01 已知方法的名字
types.GetMethod("ToString");
// 02 未知方法的名字  Invoke 执行某个方法  
types.GetMethod(nameof(User.ToString)).Invoke(user,null);
// 获取特性
types.GetCustomAttribute(typeof(TableAttribute));
// 获取id上的特性  
types.GetProperties().ForEach(item => {
    if(item.GetValue == "id") {
        item.GetCustomAttribute(RequiredAttribute);        
    }
})
[Table("Users")]
class User {
    [Required]
    public int id { get; set; }
    public string name { get; set; }
    // 方法
    public override string ToString() => $"{ID} -- {name}";
}

 

标签:反射,name,获取,学习,item,user,Net,id,types
From: https://www.cnblogs.com/zhulongxu/p/18063097

相关文章

  • Manacher 学习笔记
    \(\text{Manacher}\)学习笔记定义所谓回文串,指的是对于一个字符串\(s\),若它的长为\(n\),下标从\(1\)到\(n\),如果\(\foralli\in[1,n],s_i=s_{n+1-i}\),那么字符串\(s\)是一个回文串。给定一个字符串\(s\),求解它总共的回文子串个数。对于这一类问题的求解,我们发现,因为......
  • 如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?
    如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?最近在看论文中总看到带有“soft”和“hard”的专业术语(terminology),一般二者都是作为对比进行出现的,那么问题就是在英文的计算机类论文的表达中这个“soft”和“hard”的区别点是什么?其实这个答案......
  • DP学习笔记
    Part1:DP的本质相信每个同学,都曾经有过被DP虐的经历。大部分同学在初学DP的时候,总是见一道题背过一道题,最后基本上是学会所有常见的套路,然后开始套模板。然而,随着层次的提升,这种文科生的思维就不够用了——毕竟谁会在IOI上傻乎乎地出个石子合并或者是多重背包呢?这样,我们......
  • 使用 OpenTelemetry 的 .NET 可观测性
    参考文档 https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/observability-with-otel1,安装prometheus配置文件可以先使用docker创建一个默认的,然后拷贝出新的配置文件1dockerrun-d--nameprometheus-p9090:9090prom/prometheus2dockercpprometheus:/e......
  • .NET性能优化交流群(.NET Performance Optimization Discussion Group)
    大家好,相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:......
  • .NET性能优化交流群(.NET Performance Optimization Discussion Group)
    大家好,相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:......
  • .Net 的扩展方法
    //扩展方法//ps:js中的扩展方法比如给数组定义一个自定义的全局的方法使用prototype(原型链)//.Net给string添加一些扩展方法String是一个密封的类(不让继承的类,有Sealed关键字)//stringArraynull等在System命名空间下面;//扩展方法一定是在静态类里面str......
  • Kubernetes Replica Sets 和 Kubernetes Replica Controller的区别
    ReplicaSet(RS)是ReplicationController(RC)的升级版本。ReplicaSet和 ReplicationController之间的唯一区别是对选择器的支持。ReplicaSet支持labelsuserguide中描述的set-based选择器要求, 而ReplicationController仅支持equality-based的选择器要求。标签选择器用来选择包......
  • .Net Core 的 using 作用
    //using的使用//1.引用命名空间usingnamespace//2.自动释放资源执行结束自动调用IDispose接口释放资源//using(varcontext=newtestController()){}//3.起一个别名//如果两个类中有一个相同的方法,使用别名的方式进行运行避免冲突//usings1=same1......
  • MYSQL学习笔记22: 多表查询
    多表查询单表查询查询emp表select*fromemp;查询dept表select*fromdept;笛卡尔积(全组合)#emp表有4条记录,dept表有6条记录#笛卡尔积有4*6=24条记录select*fromemp,dept;消除无效的笛卡尔积(emp和dept通过dept_id连接)select*fromemp,deptw......