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 > )
            {
                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;}
}
c#遍历并判断实体或类的成员属性的更多相关文章
- [javaSE] 反射-获取类的成员属性和构造方法
		
成员属性和构造方法皆为对象,通过Class对象的方法可以得到 package com.tsh.reflect; import java.lang.reflect.Constructor; import ...
 - PHP中如何定义类及其成员属性与操作
		
1.类的定义: i. 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ 成员属性........ 操 ...
 - PHP如何定义类及其成员属性与操作
		
1.类的定义: 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ //成员属性 $name = ' ...
 - c#利用反射Assembly 对类和成员属性进行操作
		
protected static void test() { //获取程序集 Assembly assembly = System.Reflection.Assembly.GetExecutingAs ...
 - OC基础--结构体  枚举做类成员属性
		
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
 - [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
		
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
 - JAVA:类,对象,成员属性,成员方法,构造方法,类变量,类方法<2>
		
一.类的定义 一个全面的类定义是比较复杂的, 定义如下:
 - Java学习第二篇:类,对象,成员属性,成员方法,构造方法,类变量,类方法
		
一.类的定义 一个全面的类定义是比较复杂的, 定义如下:
 - Python入门-类的成员
		
昨天我们简单的认识了一下面向对象,以及和面向过程之间的区别,从而我们知道了类这个东西,今天我们就来详细的了解一下关于类的一些东西. 一.类的成员 首先, 什么是类的成员,很简单, 你能在类中写什么? ...
 
随机推荐
- English随笔1
			
英语中的基本五大句型 1.Subject (主语) + Verb (谓语) Li Ming works The accident happened 2.Subject (主语) + Link. V( ...
 - iOS开发小技巧
			
1. 解析详情页(是webView)遇到的3个问题: 1.图片太大,超出屏幕范围 2.怎么在webView上面添加一行文字 3.文字太小 1.解决方法 webView.scalesPageToFit ...
 - LeetCode Count of Smaller Numbers After Self
			
原题链接在这里:https://leetcode.com/problems/count-of-smaller-numbers-after-self/ 题目: You are given an inte ...
 - JAVA的网络编程
			
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
 - Access数据库中Sum函数返回空值(Null)时如何设置为0
			
在完成一个Access表中数据统计时,需要统计指定字段的和,使用到了Sum函数,但统计时发现,指定条件查询统计时有可能返回空值(Null),导致对应字段显示为空白,正常应显示为0.基本思路是在获取记录 ...
 - Windows消息机制概述
			
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程 ...
 - Excel应该这么玩——4、命名区域:搞定下拉框
			
前三篇都是讲的给Excel元素命名,本篇再介绍一种命名的使用方式:命名区域.区域是多个单元格的集合,可以是单行.单列或者类似表格的单元格矩阵,也可以是不连续的多个单元格,但很少用到.当然,一个单元格也 ...
 - 在linux中的info手册的用法
			
就是一些快捷键 空格键向下翻页,当处在当前节点的底部时,空格键跳转到下一个节点. <DEL> 或者 <BACKSPACE> 向上翻页,当处在当前节点的顶部的时候,这两个键可以跳 ...
 - 如何用jquery获取页面下HiddenField的值··
			
怎么用jquery获取页面上HiddenField的值·· 怎么用jquery获取页面上HiddenField的值··?HiddenField的值是从后台赋值的··· 先赋值给Hiddenfield ...
 - xcode编译错误
			
1.xcode无效文件的编译错误. 问题: clang: error: no such file or directory: '/Users/admin/client/trunk/sengoku_sc ...