从属性信息获取元数据类型

本文关键字:数据类型 获取 信息 从属性 | 更新日期: 2023-09-27 17:57:23

我的代码如下:

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

ObjType是 EF6 架构第一个实体的类型,DisplayName已添加为Metadata类。上面的错误可能是因为PI.GetType()返回PropertyInfo的类型。但我真的不知道如何获得房产本身。

我研究了各种示例:

ModelMetadata.FromLambdaExpression(expression, helper.ViewData);

但是,就我而言,我没有使用任何 Lambda 表达式。我只需要构建属性DisplayName的列表并将其传递出去。

从属性信息获取元数据类型

但我真的不知道如何获得房产本身。

您需要 PropertyInfo.PropertyType,因此请将PI.GetType()更改为 PI.PropertyType

我不知道

这是否会帮助你,但这就是我从它所附加到的对象中获取 MetaDataClassType 的方式。

具有元数据类型的示例类:

[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; }
}

获取元数据类类型的代码

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;