簡體   English   中英

從PropertyInfo獲取元數據類型

[英]Get MetaData Type from PropertyInfo

我的代碼如下:

foreach (var PI in ObjType.GetProperties())
{
    var metaData = ModelMetadataProviders.Current.GetMetadataForType(null, PI.GetType());
    string DispName = metaData.DisplayName
}

ObjTypeObjType架構第一個實體的類型,其中DisplayName已添加為Metadata類。 上面的錯誤可能是因為PI.GetType()返回PropertyInfo的類型。 但是我真的不知道如何獲得財產本身。

我研究了使用以下示例:

ModelMetadata.FromLambdaExpression(expression, helper.ViewData);

但是,就我而言,我沒有使用任何Lambda表達式。 我只需要構造屬性的DisplayName的列表並將其傳遞。

但是我真的不知道如何獲得財產本身。

您需要PropertyInfo.PropertyType ,因此將PI.GetType()更改為PI.PropertyType

我不知道這是否對您有幫助,但這是我從已附加對象的MetaDataClassType中獲取信息的方法。

具有MetadataType的示例類:

[MetadataType(typeof(TheMetaDataYouWantTheTypeFrom))]
public class ObjectYouWantMetaDataTypeFrom
{
    public string Username { get; set; }
    public string Name { get; set; }
}

public class TheMetaDataYouWantTheTypeFrom
{
    [Required(ErrorMessage = "You must enter a username.")]
    public object Username { get; set; }

    [Required(ErrorMessage = "You must enter a name.")]
    public object Name { get; set; }
}

獲取MetadataClassType的代碼

Type ObjectType = ObjectYouWantMetaDataTypeFrom.GetType();
object ObjectMetaData = ObjectType.GetCustomAttributes(typeof(MetadataTypeAttribute), true).FirstOrDefault();

MetadataTypeAttribute MetaData = ObjectMetaData as MetadataTypeAttribute;
if (MetaData == null)
{ throw new NullReferenceException(); }

Type metadataClassType = MetaData.MetadataClassType;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM