我正在为POCO对象创建元数据类。我将“CSVColumn”(来自LINQToCSV)属性添加到元数据类。但是当我运行程序时,它找不到它的属性。
所以我用反射测试了它,
Type t = typeof(Case);
PropertyInfo pi = t.GetProperty("ProviderId");
//bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof( ReadOnlyAttribute);
var attributes = pi.GetCustomAttributes(typeof(Case),true);
通过调用“GetCustomAttributes”实际上没有返回任何内容。
我做错了什么?
以下是我创建元数据类的方法。
我不明白的一点是,它与MVC验证完美配合。想知道如何检索自定义属性???
这是entityframework POCO对象
public partial class Case
{
public string ProviderName { get; set; }
public string ProviderId { get; set; }
}
在这里,我创建了一个Case和元数据类的部分类,
[MetadataType(typeof(CaseMetaData))]
public partial class Case
{
public class CaseMetaData
{
[CsvColumn(Name = "ProviderName", FieldIndex = 1)]
public string ProviderName { get; set; }
[CsvColumn(Name = "ProviderID", FieldIndex = 2)]
public string ProviderId { get; set; }
}
}
请有人帮助我,非常感谢。
干杯
答案 0 :(得分:2)
typeof(Case)
不是属性类型
你的意思是typeof(CsvColumnAttribute)
。
此外,标准的Reflection不了解元数据类
您需要使用AssociatedMetadataTypeTypeDescriptionProvider
。
可以找到一个很好的例子here