• 利用反射执行代码


    项目组经常有用到反射来执行代码的,直接上代码,大家一看就明白。

        public class PrimaryKeyAttribute : Attribute
        { }
        public class DbColumnAttribute : Attribute
        {
            public string Name { get; set; }
            public DbColumnAttribute(string name)
            {
                this.Name = name;
            }
        }
        public class Client
        {
            [PrimaryKey]
            [DbColumn("client_id")]
            public int ClientId { get; set; }
    
            [DbColumn("last_name")]
            public string LastName { get; set; }
    
            [DbColumn("first_name")]
            public string FirstName { get; set; }
    
            [DbColumn("email")]
            public string Email { get; set; }
        }
    
    
            static void Test3()
            {
                var client = new Client() { ClientId = 2, LastName = "James", FirstName = "jon", Email = "jon@163.com" };
                WritePK<Client>(client);
                Console.WriteLine();
                WriteColumnMappings<Client>(client);
            }
    
            public static void WritePK<T>(T item) where T : new()
            {
                var type = item.GetType();
                var queryPts = type.GetProperties();
                Console.WriteLine("Finding PK for {0} ...", type.Name);
    
                var pk = queryPts.FirstOrDefault(x =>
                            x.GetCustomAttributes(false).Any(
                                a => a.GetType() == typeof(PrimaryKeyAttribute)
                            )
                        );
                if (pk != null)
                {
                    string msg = "The Primary Key for the {0} class is the {1} property";
                    Console.WriteLine(msg, type.Name, pk.Name);
                }
            }
    
            public static void WriteColumnMappings<T>(T item) where T : new()
            {
                var type = item.GetType();
                var queryPts = type.GetProperties();
                Console.WriteLine("Finding properties for {0} ...", type.Name);
    
                foreach (var p in queryPts)
                {
                    var attributes = p.GetCustomAttributes(false); //获取属性的特性
                    var columnMapping = attributes.FirstOrDefault(a =>
                                            a.GetType() == typeof(DbColumnAttribute)
                                        );
                    if (columnMapping != null)
                    {
                        string msg = "the {0} property maps to the {1} database column";
                        var mapsto = columnMapping as DbColumnAttribute;
                        Console.WriteLine(msg, p.Name, mapsto.Name);
                    }
                }
            }

    输出结果:

    出处:http://blog.csdn.net/joyhen/article/details/39206427

  • 相关阅读:
    9多线程与异步
    5文件操作
    3C#面向对象概念
    2初步了解C#类与对象
    7Linq查询语言
    6字符编码
    8网络请求之http
    1初步了解C#语言基础
    4C#格式处理
    WPF及Silverlight中将DataGrid数据导出 南京酷得软件
  • 原文地址:https://www.cnblogs.com/mq0036/p/7017422.html
Copyright © 2020-2023  润新知