.net基础扫盲篇-Attribute

在我刚接触的项目中,在实体层见得最多的就是下图中标识出的东西,主要是由它完成了ORM,具体怎么实现的还不太清楚,但肯定和它的关系有很大,所以先去了解一下它,以便之后解开实现过程的真面纱!

首先,图中标记出的是Attribute类的自定义用法。一般Attribute的是这么使用的:

第一,先自定义一个Attribute类;

这里我们自定义一个developerattribute的attribute类

<span style="font-family:FangSong_GB2312;font-size:14px;">[AttributeUsage(AttributeTargets.All)]
    public class DeveloperAttribute : Attribute
    {
        private string name;
        private string level;
        private bool reviewed;

        public DeveloperAttribute(string name, string level)
        {
            this.name = name;
            this.level = level;
            this.reviewed = false;
        }

        public virtual string Name { get { return name; } }
        public virtual string Level
        { get { return level; } }
        public virtual bool Reviewed
        {
            get { return reviewed; }
            set { reviewed = value; }
        }
    }
</span>

第二,将Attribute类添加到对应的类上

这里我新建一个UserInfo类,将一个attribute对象附着到上面,如下

<span style="font-family:FangSong_GB2312;font-size:14px;"> [Developer("zhangsan", "5", Reviewed = true)]
    public class UserInfo
   {
        //为了突出显示,代码略。。。
   }</span>

第三,获取附着类上attribute对象的属相值

这里对attribute属相值得使用放在了UserInfo类了,看我是怎么获取并使用attribute对象属性的

<span style="font-family:FangSong_GB2312;font-size:14px;"> [Developer("zhangsan", "5", Reviewed = true)]
    public class UserInfo
    {
        public UserInfo()
        {
            System.Reflection.MemberInfo info = typeof(UserInfo);
            DeveloperAttribute att =
                (DeveloperAttribute)Attribute.GetCustomAttribute(info, typeof(DeveloperAttribute));/<span style="font-family:微软雅黑;">/该方法主要用于属相值的获取</span>
            if (att != null)
            {
                this.UserName = att.Name;
                this.Level = att.Level;
                this.IsChild = att.Reviewed;
            }
        }
        private string _name;
        public string UserName
        {
            set { _name = value; }
            get { return _name; }
        }
        public string Level { set; get; }
        public bool IsChild { set; get; }

    }
</span>

简单总结:

上面的实例让attribute类和userinfo类完成了属性的值传递,大概上面的ORM中的实体上附着的attribute对象也会通过这样的值传递,达到实体和数据库表之间的关联,这是下一个思考的方向。

时间: 2024-12-11 01:08:22

.net基础扫盲篇-Attribute的相关文章

WEB渗透指南-工具基础扫盲篇

1.web安全-渗透技术 基本工具 扫描器 safe3 wvs  寻找可能存在注入的点 sqlmap 判断数据库类型,数据库版本,盲注等,获取数据库信息内容等 (穿山甲,啊d,明小子,Havij) md5解密 在线 brupsuite神器,修改提交参数等,功能强大 一句话木马,木马图片合成,上传文件 菜刀,过狗菜刀,连接提权,getshell 2.手工注入 ' ' and '1'='1 ' and '1'='2 group by 3. xss xss 获取用户cookie,登录,进而提权 xss

Spring MVC原理及实例基础扫盲篇

最近 项目中刚接触了SpringMVC,就把这几天看的跟实践的东西写出来吧. 一.首先,先来了解一下SpringMVC到底是个什么样的框架? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发. 二.SpringMVC的工作原理: 1. 客户端请求提交到DispatcherServlet 2. 由Dispatche

《手把手教你》系列进阶篇之2-python+ selenium自动化测试 - python基础扫盲(详细教程)

1. 简介 这篇文章主要是分享讲解一下,如何封装自己用到的方法和类.以便方便自己和别人的调用,这样就可以避免重复地再造轮子. 封装(Encapsulation)是面向对象的三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 就好比使用计算机,我们只需要使用计算机提供的键盘,就可以达到操作计算机的目的,至于在敲击键盘时计算机内部是如何工作,我们根本不需要知道. 封装机制保证了类内部

01--Qt扫盲篇

Qt扫盲篇 1.What is Qt 一个跨平台应用程序和UI开发框架,主要偏向于UI框架方面,由诺基亚公司开发维护. 使用 Qt 只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序,Qt 支持以下平台: 直观的 C++跨平台类库(封装,SDK) 跨桌面和嵌入式操作系统的移植性(跨平台) 具有跨平台 IDE 的集成开发工具(Qt Creator) 在嵌入式系统上的高运行时间性能,占用资源少(手机MeeGo,N9) 2.Use Qt 下载Qt SDK(htt

jQuery基础——样式篇

jQuery基础--样式篇 jQuery 分 2 个系列版本 1.x 与 2.x,主要的区别 在于 2.x 不再兼容 IE6.7.8 为移动端而优化,由于减少了一些代码,使得该版本比 jQuery 1.x 更小且更快. 如果开发者比较在意老版本 IE 用户,只能使用 jQuery 1.9 及之前的版本了. $(document).ready 的意思是等页面的文档(document)中的节点都加载完毕后,在执行后续的代码,因为我们在执行代码的时候,可能会依赖页面的某一个元素,我们要确保这个元素真正

win7扫盲篇--介绍安装(1)

1.硬件+操作系统+软件应用=用户电脑 2.win7  2007年 winXP 2001年  不能兼容64位 win98 1998年 UNIX  银行操作系统 Linux开源自由的操作系统,安全稳定比较出色,在服务领域使用广泛,安卓是基于Linux操作系统 Mac OS苹果操作系统 MS-DOS 命令行操作 3.win7版本 win7家庭普通版的功能最少,简装版本 win7旗舰版,功能最多 硬件需求 cpu1GH以上,内存1G以上,硬盘16G以上,32位最多支持3个G得内存 cpu1GH以上,内

Linux 初探 (基础认知篇)

linux 初探 (基础认知篇) 什么是linux? Linux是开源的类Unix系统,单纯的术语Linux来说其实仅仅指由林纳斯.托瓦兹开发并于1991年发布的一款存在于内核空间的操作系统内核(kernel). 为什么会开发要开发内核呢? 要从应用程序是如何在计算机上跑起来谈起,早期的应用程序需要了解CPU指令集利用汇编等语言进行开发.CPU的常见指令集架构:x86.x64(早期称其为amd64)兼容x86.m68000(m68k).arm.power.power pc(ppc,桌面级powe

Linux新手入门书籍推荐 鸟哥的linux私房菜-基础学习篇

这本书写的不错.赞~\(≧▽≦)/~ 2017-02-24 下午,我开始在Linux下写第一个.c程序,在终端打印hello world.gcc 源代码文件之后,输出可执行文件,但是 当我输入文件名执行它的时候,却提示我 无法找到命令.于是我找百度,查资料,花了半个小时,终于找到解决方法了, 输入"./filename"即可.... 2017-02-25 我看<基础学习篇>这本书,在P158页下面的例题讲解中找到了昨天下午异常的解析.我就很是感慨,心想:要是早看这本书,半个

不惧面试:HTTP协议(1) - 基础扫盲

v博客前言 先交代下背景,之前在一家公司面试.NET开发,去了先是做一份笔试题,有一半是关于HTTP协议的,技术总监直接面试,也是问一大堆HTTP协议的知识点,可能跟该公司的产品有关,该公司属于互联网公司,所以对HTTP协议比较看重吧.本人主要是做c/s开发,HTTP协议也只是略懂一二,所以面试的效果不太好,给的offer工资不高.面试回来后好好补了下HTTP协议.写这个系列的原因是总结自己遇到的面试题以及可能遇到的题目,更重要的是,今年定的目标是掌握网络这一块的知识点,先是搞懂HTTP协议,然