特性与元数据

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace chap2_1_7

{

class Program

{

static void Main(string[] args)

{

HR hr = new HR();

Employee employee = new Employee();

hr.ToSalary(employee);

Console.ReadKey();

}

}

public enum TransferSourceType//转账类型

{

Salary,

Reimburse,

Loan

}

[AttributeUsage(AttributeTargets.Parameter)]

public class TransferSource : Attribute//转账元数据

{

public TransferSourceType TransferType { get; set; }

}

public partial class Employee//员工实体

{

public void PaySalary([TransferSource(TransferType = TransferSourceType.Salary)] int toNumber)

{

//直接汇入员工银行卡

Console.WriteLine("收到工资:"+toNumber);

}

public void PayReimburse([TransferSource(TransferType = TransferSourceType.Salary)] int toNumber)

{

//直接汇入员工银行卡

Console.WriteLine("收到工资:" + toNumber);

}

public void PayLoan([TransferSource(TransferType = TransferSourceType.Salary)] int toNumber)

{

//直接汇入员工银行卡

Console.WriteLine("收到工资:" + toNumber);

}

}

public class HR

{

public void ToSalary(Employee employee)

{

var transferSource = typeof(Employee).GetMethod("PaySalary").GetParameters()[0].GetCustomAttributes(false)[0] as TransferSource;

switch (transferSource.TransferType)

{

case TransferSourceType.Salary:

{

employee.PaySalary(6000);//发工资

}break;

case TransferSourceType.Reimburse:

{

employee.PayReimburse(500);//报销

}break;

case TransferSourceType.Loan:

{

employee.PayLoan(20000);//借款

}break;

}

}

}

}

时间: 2024-11-13 10:15:04

特性与元数据的相关文章

C#图解教程 第二十四章 反射和特性

反射和特性元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特性其他预定义特性有关应用特性的更多内容多个特性其他类型的目标全局特性自定义特性声明自定义特性使用特性的构造函数指定构造函数使用构造函数构造函数中的位置参数和命名参数限制特性的使用自定义特性的最佳实践访问特性使用IsDefined方法使用GetCustomAttributes方法 Note 类的元数据包含

特性(C# 和 Visual Basic)

特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联. reflection.' data-guid="716c0768f610f38427afe934e71f1d47">特性与程序实体关联后,即可在运行时使用名为"反射"的技术查询特性. Reflection (C# and Visual Basic).' data-guid="4484aa4f01eb3fabaeabfd2ce4c39248">有

反射+type类+Assembly+特性

什么是元数据,什么是反射: 程序是用来处理数据的,文本和特性都是数据,而我们程序本身(类的定义和BLC中的类)这些也是数据. 有关程序及其类型的数据被称为元数据(metadata),它们保存在程序的程序集中. 程序在运行时,可以查看其它程序集或其本身的元数据.一个运行的程序查看本身的元数据或者其他程序集的元数据的行为叫做反射. 下面我们我们来学习如何使用Type类来反射数据,以及如何使用特性来给类型添加元数据. Type位于System.Reflection命名空间下 Type类 预定义类型(i

TypeScript 1.5 Beta带来修饰元数据支持

(此文章同时发表在本人微信公众号"dotNET每日精华文章") 今天由于有点小感冒,就不长篇大论了,简单介绍一下和VS 2015 RC一同发布的TypeScript 1.5 Beta的新特性--修饰元数据. 在Build 2015大会上,微软与Visual Studio 2015 RC一同发布了TypeScript 1.5 Beta,通过这个测试版可以了解到TypeScript未来开发进度的情况.微软分别提供了VS2015 RC.VS2013.npm和源代码的安装方式. TypeScr

动态添加特性

特性属于元数据,一般不能改,但可以通过TypeDescriptor添加类级别的特性,也只能通过TypeDescriptor获取到这个类特性 Entity e=new Entity(); ColumnAttribute c = new ColumnAttribute() { LogicDeleteValue = "wang" }; TypeDescriptionProvider ty = TypeDescriptor.AddAttributes(e, c); var x = TypeDe

Unity游戏开发——C#特性Attribute与自动化

这篇文章主要讲一下C#里面Attribute的使用方法及其可能的应用场景. 比如你把玩家的血量.攻击.防御等属性写到枚举里面.然后界面可能有很多地方要根据这个枚举获取属性的描述文本. 比如你做网络框架的时候,一个协议号对应一个类的处理或者一个方法. 比如你做ORM,一个类的属性是否映射持久化文件中的属性,映射过去的属性名是什么. 1.什么是Attribute 如果用过Java的Annotation的同学,可以把Attribute当成Annotation来看待. 还不了解Attribute的同学不

C#反射与特性(一):反射基础

目录 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 2. 程序集操作 2.1 获取 程序集对象(Assembly) 2.2 Assembly 使用 2.3 获取程序集的方式 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 在 <C# 7.0 本质论>中,关于这方面的知识在 <第十八章 反射.特性和动态编程>:在<C# 7.0 核心技术指南>中,这部分内容在<第19章 反射和元数据>. [图片来自 <C# 7.0

Attribute (一)

本文导读 1.概念 2.自定义一个 Attribute 概念       Attribute是一个特殊的类,我们知道 .NET 程序集 具有自描述的特性(由于元数据),Attribute和.NET的元数据一起,可用来向描述你的代码,或者在程序运行的时候影响应用程序的行为.       和Attribute 密切相关的技术是反射       在.NET 框架中有许多内置的 Attribute,如序列化.安全性.DllImport等       看一个内置Attribute 的代码 using Sy

[Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需