モデル定義、使用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 {得ます。セット; } }