• 特性与元数据


    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;
                }
            }
        }
    }
  • 相关阅读:
    开启Android应用调试选项的工具XDebug的介绍
    Android Linker 与 SO 加壳技术
    PE文件格式偏移参考
    Android apk快速定位、灰色按钮克星--DroidSword
    Android系统加载Apk文件的时机和流程分析(1)--Android 4.4.4 r1的源码
    开启Android Apk调试与备份选项的Xposed模块的编写
    基于Xposed Hook实现的Android App的协议算法分析小工具-CryptoFucker
    排序学习之---选择排序
    在PHPStorm中快速插入当前日期
    排序学习之---插入排序
  • 原文地址:https://www.cnblogs.com/sulong/p/4917100.html
Copyright © 2020-2023  润新知