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入门-类的成员
昨天我们简单的认识了一下面向对象,以及和面向过程之间的区别,从而我们知道了类这个东西,今天我们就来详细的了解一下关于类的一些东西. 一.类的成员 首先, 什么是类的成员,很简单, 你能在类中写什么? ...
随机推荐
- Android流畅度测试
Android流畅度测试 测试方法一:系统自带-开发者模式 测试方法二:FPS Meter测试安卓帧数 H5页面加载速度:window.performance.timing 测试方法一:系统自带-开发 ...
- 菜菜CPP日记
分支预测建议: http://www.cppblog.com/mysileng/archive/2014/09/29/208454.html #ifndef likely #define likely ...
- lodash的源码(1)
数组篇 1.compact,就是将数组中的false值去掉 function compact(array) { var index = -1, length = array ? array.lengt ...
- VS2010--2013使用技巧及使用过程中遇到的问题
Microsoft Visual Studio 2010 --2013默认情况下是不显示代码的行号的,但是在编译出错时,可点击下面输出窗口中的错误提示进行定位.但是这样操作起来你有没有感觉到不方便呢. ...
- Python2.6.6执行selenium自动化
系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...
- 关注微信 即可连上wifi 的设计思路
这个功能之前是在知乎上有人在询问后台的实现逻辑,然后才知道的。其实对微信的各种关注,实在是不想沾惹。 但是这个功能很有意思,当我关注了你,那么就可以在你的店里上wifi 。如果取消则立刻不能上网。 这 ...
- MVC返回JSON数据格式书写方式
返回json数据格式,多个返回值加,隔开 [Route("api/users/web")] //如果不加这个路由请这样调用:/api/users/web?schoolname=十五 ...
- 13. 星际争霸之php设计模式--正面模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 解决启动Eclipse后提示’Running android lint’错误的问题
打开项目的AndroidManifest.xml文件,android:targetSdkVersion="21"改为“20”或以下的值.由于Android L为预览版本,版本号还是 ...
- MongoDB数据库基本用法
show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前 ...