流浪のwolf

卷帝

导航

.Net 反射的学习

// 反射
// 一切从 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}";
}

 

posted on 2024-03-09 18:15  流浪のwolf  阅读(4)  评论(0编辑  收藏  举报