DisplayAttributeアプリケーション - PropertyName意味は自動的に対応するUIの表示名を取得します

モデル定義、使用DisplayAttribute

    パブリッククラスAddressSetInfo 
    { 
        /// <要約> 
        /// invoiceAddress.Id 
        /// </要約> 
        [表示(NAME = "ID")] 
        パブリック仮想のInt64イド{得ます。セット; } 
    }    

 

列挙型の定義、使用DisplayAttribute

    パブリック列挙CustomerFinancialStatementCurrencyType 
    { 
        /// <要約> 
        ///人民币、CNY 
        /// </要約> 
        [表示(NAME = "CNY")] 
        RMB = 1、
        /// <要約> 
        ///美元
        /// </要約> 
        [表示(NAME = "USD")] 
        USD = 2 
    }

  

 

クラスの解析DisplayAttribute

        /// <要約> 
        /// GetPropertyNameDic 
        /// </要約> 
        /// <typeparam名= "T">辞書。キー:PropertyName意味。値:PropertyDetail 
        /// </ typeparam> 
        /// <戻る> </戻り> 
        パブリック静的辞書<文字列、PropertyDetail> GetPropertyNameDic <T>()
        { 
            VAR結果=新しい辞書<文字列、PropertyDetail>(); 
            試す
            { 
                VAR typeOfObject = typeof演算(T)。
                VAR PDS = typeOfObject.GetProperties()。
                (PDS == NULL)であれば
                { 
                    戻り結果。
                foreachの(PDSにおけるVARのP)
                { 
                    VAR propertyItem =新しいPropertyDetail(){ 
                        BelongToClassFullName = typeOfObject.FullName、
                        PropertyName意味= p.Name 
                    }。
                    VAR ATTR = p.GetCustomAttribute(typeof演算(DisplayAttribute))DisplayAttributeなど。
                    (!ATTR = null)の場合は
                    { 
                        propertyItem.DisplayName = attr.Name。
                    } 
                    result.Add(p.Name、propertyItem)。
                } 
            } 
            キャッチ(例外例)
            {
                EXを投げます。
            } 
            結果を返します。
        }

 

列挙型のための解析DisplayAttribute

        /// <要約> 
        /// GetEnumNameDicForDisplayAttr 
        /// </要約> 
        ///ます。<param name = "enumClassType">辞書。キー:列挙型の値。値:PropertyDetail </ PARAM> 
        /// <戻る> </戻り> 
        パブリック静的辞書<文字列、PropertyDetail> GetEnumNameDicForDisplayAttr(タイプenumClassType)
        { 
            IF(enumClassType == NULL)
            { 
                新しい例外をスローする( "要求がnull")。
            } 
            (!enumClassType.IsEnum)場合は
            { 
                新しい例外(「要求ではない列挙型タイプ」)を投げます。
            試す
                    (descriptionAttribute!= null)の場合
                VAR enumValues = enumClassType.GetEnumValues()。
                foreachの(enumValuesにおけるVAR値)
                { 
                    のMemberInfoのMemberInfo = 
                        enumClassType.GetMember(value.ToString())まず、()。

                    VAR valueItem =新しいPropertyDetail()
                    { 
                        BelongToClassFullName = enumClassType.FullName、
                        PropertyName意味= memberInfo.Name 
                    }。
                    VAR descriptionAttribute = 
                        memberInfo.GetCustomAttribute <DisplayAttribute>(); 
                    { 
                        valueItem.DisplayName = descriptionAttribute.Name。
                    } 
                    result.Add(value.ToString()、valueItem)。
                } 
            } 
            キャッチ(例外例)
            { 
                スローEX。
            } 

            結果を返します。
        } 

    }

  

補助モデルの定義

    /// <要約> 
    /// PropertyDetail 
    /// </要約> 
    パブリッククラスPropertyDetail 
    { 
        /// <要約> 
        /// BelongToClassName 
        /// </要約> 
        公共の文字列BelongToClassFullName {取得します。セット; } 

        /// <要約> 
        /// PropertyName意味
        /// </要約> 
        公共列PropertyName意味{得ます。セット; } 

        /// <要約> 
        ///のDisplayName 
        /// </要約> 
        パブリック文字列のDisplayName {得ます。セット; } 

    }

  

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/panpanwelcome/p/11910695.html