一、建立一个自定义的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. glance对接ceph

    目录 glance对接ceph 1. 上传镜像 2. 对接ceph 2.1 创建池 2.2 创建用户 2.3 下发ceph文件 2.4 修改globals文件 2.5 更新glance配置 3. 上传 ...

  2. 深入解析Spring AI框架:在Java应用中实现智能化交互的关键

    今天我们的Spring AI源码分析主题即将结束.我已经对自己感兴趣的基本内容进行了全面的审视,并将这些分析分享给大家.如果你对这个主题感兴趣,可以阅读以下几篇文章.每篇文章都层层递进,深入探讨相关内 ...

  3. 浅谈 K-D Tree 及其进阶应用

    前言 \(\text{K-D Tree (K-Dimension Tree)}\) 是一种可以有效处理高维信息的数据结构. 在一般信息学竞赛题目中 \(k = 2\),此时它又称 \(\text{2- ...

  4. 两小时学会使用dubbo(直接API、spring、注解、springboot)

    最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式.高性能.透明化 ...

  5. KubeSphere 社区双周报|Fluent Bit 升级到 v2.2.2|2024.01.18-02.01

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  6. 某物联网数智化园区行业基于 KubeSphere 的云原生实践

    公司简介 作为物联网 + 数智化园区一体化解决方案提供商,我们致力于为大中型园区.停车场提供软硬件平台,帮助园区运营者实现数字化.智能化运营. 在使用 K8s 之前我们使用传统的方式部署上线,使用 s ...

  7. 云原生周刊:CNCF 宣布 KEDA 毕业 | 2023.8.28

    开源项目推荐 KDash KDash 是一个用 Rust 构建的简单快速的 Kubernetes 仪表板.它提供了一个终端界面,用于监视和管理 Kubernetes 集群.该仪表板具有多种功能,包括节 ...

  8. VuePress安装

    linux 下预构建二进制文件安装 Nodejs Nodejs预购建二级制文件下载地址 安装 Nodejs 和 npm # 解压 tar xvf node-v20.15.1-linux-x64.tar ...

  9. 『玩转Streamlit』--登录认证机制

    如果你的Streamlit App中使用的数据的比较敏感,那么,保护这个App及其背后的数据免受未授权访问变得至关重要. 无论是出于商业机密的保护.用户隐私的维护,还是为了满足日益严格的合规要求,确保 ...

  10. 10-3 定制操作lambda

    目录 10.3.1 向算法传递函数 谓词 排序算法 10.3.2 lambda表达式 引入 介绍lambda 向lambda传递参数 使用捕获列表 调用find_if 使用for_each 完整的bi ...