一、建立一个自定义的Attribute类

注:类名+Attribute,类需要继承Attribute

    /// <summary>
/// 特性
/// </summary>
public class SensitiveFileTypeAttribute : Attribute
{
/// <summary>
/// 字段类型
/// </summary>
public SensitiveFileTypeEnum FileType { get; set; } public SensitiveFileTypeAttribute(SensitiveFileTypeEnum fileType)
{
FileType = fileType;
} } /// <summary>
/// 字段类型枚举
/// </summary>
public enum SensitiveFileTypeEnum
{ /// <summary>
/// 单价
/// </summary>
Price = 1,
/// <summary>
/// 金额
/// </summary>
Amount = 2,
/// <summary>
/// 折扣
/// </summary>
Discount = 3 }

  二、简单在属性上面使用特性:

属性上面标注特性:[特性名(特性值)]

public class SaleSoDtlDto
{
/// <summary>
/// 数量
/// </summary>
public int Qty { get; set; } /// <summary>
/// 折扣
/// </summary>
[SensitiveFileType(SensitiveFileTypeEnum.Discount)]
public decimal Discount { get; set; } /// <summary>
/// 未税本币结算价
/// </summary>
[SensitiveFileType(SensitiveFileTypeEnum.Price)]
public decimal SettlementPrice { get; set; } /// <summary>
/// 含税本币结算金额
/// </summary>
[SensitiveFileType(SensitiveFileTypeEnum.Amount)]
public decimal TaxSettlementAmount { get; set; } }

  

三、获取某一个类上面有某特性的所有属性:

    /// <summary>
/// 导出敏感字段
/// </summary>
public static class SensitiveFileAppService
{
/// <summary>
/// 使用反射找出某一个类有标记某特性的属性
/// </summary>
/// <typeparam name="T"></typeparam>
public static List<PropertyInfo> GetSensitiveFileList<T>() where T : class, new()
{
List<PropertyInfo> proList = new List<PropertyInfo>(); var properties = typeof(T).GetProperties();
if (properties == null || !properties.Any()) return proList; foreach (PropertyInfo p in properties)
{
var name = p.Name;//属性名称 var attribute = p.GetCustomAttribute<SensitiveFileTypeAttribute>();
if (attribute == null) continue; //当前属性是否有SensitiveFileTypeAttribute特性 为NULL就没有此属性 var fileType = attribute.FileType;//特性的FileType属性值 proList.Add(p); } return proList; } }

  

 public void TestWay()
{ var proList = SensitiveFileAppService.GetSensitiveFileList<SaleSoDtlDto>();
}

  

特性Attribute的简单用法的更多相关文章

  1. 代码走查25条疑问 C# 跳转新的标签页 C#线程处理 .Net 特性 attribute 学习 ----自定义特性 看懂 ,学会 .NET 事件的正确姿势-简单版

    代码走查25条疑问   代码走查(Code Review) 是一个开发人员与架构师集中讨论代码的过程.通过代码走查可以提高代码的 质量,同时减少Bug出现的几率.但是在小公司中并没有代码走查的过程在这 ...

  2. 【C#进阶系列】18 特性Attribute

    这个东西有的叫定制特性,然而我喜欢直接叫特性,但是这样的话一些人不知道我说的是什么,如果我说是Attribute的话那么知道的或者用过的就都懂了. 还记得讲到枚举和位标志那一章,关于位标志,有一个[F ...

  3. [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute

    剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...

  4. [C#] C# 知识回顾 - 特性 Attribute

    C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...

  5. SQL*Plus break与compute的简单用法

    SQL*Plus break与compute的简单用法在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现.这个两个命令简单易用,可满足日常需求,其实质也相当于 ...

  6. 学习笔记--C#特性Attribute(一)

    这个框框好烦人啊,删不掉 一.背景 [serializable] public class Person(){} 这是我第一次看到特性(Attribute),那时我还不知道这是什么,怎么会有这种写法, ...

  7. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  8. 理解特性attribute 和 属性property的区别 及相关DOM操作总结

    查一下英语单词解释,两个都可以表示属性.但attribute倾向于解释为特质,而property倾向于解释私有的.这个property的私有解释可以更方便我们下面的理解. 第一部分:区别点 第一点:  ...

  9. slf4j的简单用法以及与log4j的区别

    之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...

  10. 如何获取类或属性的自定义特性(Attribute)

    如何获取类或属性的自定义特性(Attribute) 问题说明: 在ActiveRecord或者其他的ORM等代码中, 我们经常可以看到自定义特性(Attribute)的存在(如下面的代码所示) [Pr ...

随机推荐

  1. 第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载

    文件上传下载-解决无图形化&解决数据传输 命令生成:https://forum.ywhack.com/bountytips.php?download 反弹shell 以参照物为准,以Linux ...

  2. Spirng Aop 实现自定义注解及实现

    需求:日志记录 需要记录当前用户访问的每个接口对应的前端页面功能信息 声明一个注解 @Documented @Retention(RetentionPolicy.RUNTIME) @Target({E ...

  3. iOS文本字数动态展示使用小结

    项目开发中经常用到类似这样的功能,文本输入的时候需要动态的显示文本输入字数.这里以多行文本框为例,介绍一下实现方案.核心代码如下 -(void)textViewDidChange:(UITextVie ...

  4. watch 监视搜索关键词的变化不断发送请求返回建议

    watch: { keywords: { // yarn add lodash 下载lodash包 // import { debounce } from "lodash"; 引入 ...

  5. 小集训 CSP-S 模拟赛

    DAY 1 A.喜剧的迷人之处在于 小思维题不必细讲 B. 镜中的野兽 状压+容斥 $ gcd (x) + lcm(x) = m $ ,可以得知 $ gcd(x) $ 一定是 m 的因子,那么就可以枚 ...

  6. KubeSphere 在互联网医疗行业的应用实践

    作者:宇轩辞白,运维研发工程师,目前专注于云原生.Kubernetes.容器.Linux.运维自动化等领域. 前言 2020 年我国互联网医疗企业迎来了"爆发元年",越来越多居民在 ...

  7. Nuget包本地调试以及自动打包上传

    项目过程中,经常需要打包Nuget包,并且引用本地Nuget包调试,完成后上传,因此做了点配置,分享给大家.如果大家有更好的方法欢迎分享. 1. 使用生成后事件自动打包 项目文件中本身是可以配置生成时 ...

  8. 题解:CF687C The Values You Can Make

    CF687C The Values You Can Make 题解 题目翻译感觉不明不白的(至少我看了几遍没看懂),这里给个较为清晰的题面. 题目描述 给你 \(n\) 个硬币,第 \(i\) 个硬币 ...

  9. jmeter接口测试应用

    一.jmeter下载 安装jmeter: 地址https://jmeter.apache.org/download_jmeter.cgi 下载 [apache-jmeter-XXX. zip ]解压缩 ...

  10. 多校A层冲刺NOIP2024模拟赛08 排列

    多校A层冲刺NOIP2024模拟赛08 排列 一种连续段 dp 的解法. 题面 小 Y 最近在研究组合数学,他学会了如何枚举排列. 小 Z 最近在研究数论,他学会了求最大公约数. 于是小 Y 和小 Z ...