c#遍历并判断实体或类的成员属性

c#的Attribute有些类似java中的annotation,可以方便地在类成员中做修饰/限制作用。

 

Demo:

class ss {
    public stat BsonDocument Iterator(object obj){
        MyAttr currAttr = null;// 自定义注解类
        Type type = obj.GetType();// obj为传入的对象参数
        //获取类名
        String className = type.Name;
        //获取所有公有属性
        PropertyInfo[] info = type.GetProperties();
        // 遍历所有属性
        foreach (PropertyInfo var in info)
        {
            //判断是否含有MongoDB相关注解(一个属性可以包含多个注解)
            Object[] attrs = var.GetCustomAttributes(false);// 取得属性的特性标签,false表示不获取因为继承而得到的标签
            if (attrs.Length > 0)
            {
                foreach(Object attr in attrs)// 遍历该属性的所有注解
                {
                   if ((currAttr = attr as MyAttr) != null && currAttr.AddToDB)// 判断是否有属性修饰,并判断属性值
                    {
                        bson.Add(var.Name, var.GetValue(obj,null).ToString());
                    }
                }
            }
        }
    }
}

// 自定义注解类
public class MyAttr : Attribute
{
    public bool AddToDB;
}
    
//实体类定义:

class Entity
{
    [MyAttr(AddToDB=true)]
    public string aa{get; set;}
    
    public string bb{get; set;}
    
}
View Code

 

转载于:https://www.cnblogs.com/lbhqq/p/5529672.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值