zoukankan      html  css  js  c++  java
  • 属性控制类2

    代码
    [AttributeUsage(AttributeTargets.Property, Inherited = false)]
    [ComVisible(
    true)]
    public class PropertyKeyAttribute : Attribute
    {
    public PropertyKeyAttribute(int Length)
    {
    this.Length = Length;
    this.NoneBuild = true;
    }
    public PropertyKeyAttribute()
    {
    this.NoneBuild = true;
    }

    public int Length { get; set; }
    public System.Data.SqlDbType SqlDbType { get; set; }
    public string Name { get; set; }
    public int Index { get; set; }
    public bool NoneBuild { get; set; }



    public static int GetLength<T>(string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute<T>(name);
    if (attr != null)
    return attr.Length;
    return 20;
    }
    public static System.Data.SqlDbType GetSqlDbType<T>(string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute<T>(name);
    if (attr != null)
    return attr.SqlDbType;
    return System.Data.SqlDbType.VarChar;
    }
    public static bool GetNoneBuild<T>(string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute<T>(name);
    if (attr != null)
    return attr.NoneBuild;
    return false;
    }

    public static int GetLength(object model, string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute(model, name);
    if (attr != null)
    return attr.Length;
    return 20;
    }
    public static System.Data.SqlDbType GetSqlDbType(object model, string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute(model, name);
    if (attr != null)
    return attr.SqlDbType;
    return System.Data.SqlDbType.VarChar;
    }
    public static bool GetNoneBuild(object model, string name)
    {
    PropertyKeyAttribute attr
    = GetPropertyKeyAttribute(model, name);
    if (attr != null)
    return attr.NoneBuild;
    return false;
    }

    #region PropertyKeyAttribute
    private static PropertyKeyAttribute GetPropertyKeyAttribute<T>(string name)
    {
    T model
    = (T)Activator.CreateInstance(typeof(T));
    Type type
    = typeof(PropertyKeyAttribute);

    PropertyInfo pi
    = model.GetType().GetProperty(name);
    object[] attributes = pi.GetCustomAttributes(false);
    foreach (object o in attributes)
    {
    if (o is PropertyKeyAttribute)
    {
    //把得到的属性强制转换成PersonAttribute
    PropertyKeyAttribute pa = (PropertyKeyAttribute)o;
    return pa;
    }
    }
    return null;
    }
    private static PropertyKeyAttribute GetPropertyKeyAttribute(object model, string name)
    {
    try
    {
    Type type
    = typeof(PropertyKeyAttribute);
    PropertyInfo pi
    = model.GetType().GetProperty(name);
    object[] attributes = pi.GetCustomAttributes(false);
    foreach (object o in attributes)
    {
    if (o is PropertyKeyAttribute)
    {
    //把得到的属性强制转换成PersonAttribute
    PropertyKeyAttribute pa = (PropertyKeyAttribute)o;
    return pa;
    }
    }
    }
    catch
    {

    }
    return null;
    }
    #endregion


    }
    千人.NET交流群:18362376,因为有你,代码变得更简单,加群请输入cnblogs
  • 相关阅读:
    ubuntu无法关机,卡死
    Ubuntu16.04安装8821CE 无线网卡无驱动
    百度Apollo学习(一)
    如何在Virtualbox中对Ubuntu系统根分区扩容
    Ubuntu下安装Google浏览器
    ubuntu下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题(已解决)
    ubuntu 下Visual Studio Code 安装
    百度Apollo搭建步骤(待更新)
    Ubuntu系统下常用的新建、删除、拷贝文件命令
    Ubuntu 16.04下docker ce的安装(待完善)
  • 原文地址:https://www.cnblogs.com/kingkoo/p/1703413.html
Copyright © 2011-2022 走看看