C# 通过特性绑定Class值

有时候我们希望能从模型中获取一些值,但又不想改变模型的基础架构。那么通过特性绑定值就是一个思路。

例如数据库表名与MVC Model的关系,在MVC架构中,Model一般需要与数据库表对应。因此表名与Model的关系就十分密切,但Model的命名一般不使用数据库表名,那么通过特性将数据库表名直接绑定在Model类中就非常方便了。

第一步——建立自定义特性

特性可向程序中添加元数据。元数据是有关在程序中定义的类型的信息。所有的 .NET 程序集都包含指定的一组元数据,这些元数据描述在程序集中定义的类型和类型成员。可以添加自定义特性,以指定所需的任何附加信息。
简而言之,特性就是能添加在程序集基础信息中的数据。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
    public class TableAttribute : Attribute
    {
        public readonly  string tableName;

        public TableAttribute(string tableName)
        {
            this.tableName = tableName;
        }
    }

第二步——在类中添加特性

这一步将tableName = "SF_DEPARTMENT_INFO" 这一信息绑定在 DepartmentModel这一个Model中。

    [TableAttribute("SF_DEPARTMENT_INFO")]
    public class DepartmentModel
    {
        public string ID { get; set; }
        public string DEPARTMENT_NAME { get; set; }
        public string PID { get; set; }
        public string DEPARTMENT_LEVEL { get; set; }
        public string DELETE_FLAG { get; set; }
    }

第三步——使用

当需要使用到特性值时,通过Attribute 的GetCustomAttribute()方法就可以将该自定义特性的实例获取出来。

TableAttribute tableAttribute = (TableAttribute)Attribute.GetCustomAttribute(
                                typeof(T), typeof(TableAttribute));
            string tableName = tableAttribute.tableName;
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容