一、建立一个自定义的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. Maya 2019.2 Mtoa 无法正常加载并报错

    事件起因: 在开始安装 Maya2019.2 时自动安装的 Mtoa 的版本为 5.3.1,但是在插件管理器里无法启用插件,于是乎去网上下了一个低的版本 5.1.1,虽然可以使用但是渲染出来的东西不能 ...

  2. 25. Socket与粘包问题

    1. Socket概念 Socket允许应用程序通过它发送或接收数据,对其进行像对文件一样的打开.读写和关闭等操作,从而允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信.Socket ...

  3. Vue3 的 nextTick 函数

    作用: DOM 渲染是异步耗时的, vue2.x 需要等到 DOM 渲染完成之后做某个事情,需要使用 this.$nextTick , vue3.x 则直接提供了 nextTick 这个方法去实现 : ...

  4. 13 Multi-Head Self-Attention(从空间角度解释为什么做多头)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  5. 使用 Fluent Bit 实现云边统一可观测性

    本文基于 KubeSphere 可观测性与边缘计算负责人霍秉杰在北美 KubeCon 的 Co-located event Open Observability Day 闪电演讲的内容进行整理. 整理 ...

  6. python之调用高德、百度api解析经纬度地址

    调用高德 # 高德地图根据经纬度反查地址,每天只能调用5000次 def gaode_excute_single_query(coordStrings ,currentkey='你自己的api-key ...

  7. for-each循环陷阱

    for-each删除元素报错 public static void main(String[] args) { List<String> list = new ArrayList<& ...

  8. 工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127

    工作中的技术总结_ form表单使用注意事项之form触发后台提交事件 _20220127 如无必要不要使用 form标签 来作为组件的父节点 事件过程: 项目使用的是 spring + jsp 的框 ...

  9. AI Undetect是什么?

    标题:AI UNDETECT:超越AI检测的反检测神器 在数字时代,人工智能的飞速发展已经渗透到我们生活的各个领域,包括教育.科技.网络内容制作等.越来越多的人依赖AI来生成各种内容,从学术作业.论文 ...

  10. 3.5 Linux命令行下如何识别文件类型?

    对于第一次使用 Linux 命令行的用户,可能真的搞不清楚哪个是文件,哪个是目录,究其原因是很难直接通过名字看出来目录和文件的区别. 虽然从名称上不容易分辨,但是可以从颜色上进行区分.一般情况下,Li ...