未使用MetadataType加载元数据
我对MetadataType有一些问题。我已经有了DLL
helper-project,用于使用LinqToSQL从MS SQL
Server进行数据访问。我还需要为生成的类ClientInfoView添加元数据。我已经按照以下方式完成了:
using System;using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
namespace DataAPI.LINQToSQL
{
[MetadataType(typeof(ClientInfoViewMetaData))]
public partial class ClientInfoView
{
internal sealed class ClientInfoViewMetaData
{
[Category("Main Data"), DisplayName("Client ID")]
public int ID { get; set; }
[Category("Main Data"), DisplayName("Login")]
public string Login { get; set; }
...
}
}
}
但是,当我在运行时检查属性时,我发现ClientInfoView没有任何属性。
你能帮我发现一个错误吗?
回答:
要给出部分答案,可以检查ClientInfoView是否具有属性。一些对我有用的小演示。仍在尝试查找为什么我无法在ClientInfoViewMetaData单个属性中访问那些属性的原因
static void Main(string[] args) {
TypeDescriptor.AddProviderTransparent(
new AssociatedMetadataTypeTypeDescriptionProvider(typeof(ClientInfoView), typeof(ClientInfoViewMetaData)), typeof(ClientInfoView));
ClientInfoView cv1 = new ClientInfoView() { ID = 1 };
var df = cv1.GetType().GetCustomAttributes(true);
var dfd = cv1.ID.GetType().GetCustomAttributes(typeof(DisplayNameAttribute), true);
var context = new ValidationContext(cv1, null, null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject( cv1,context, results, true);
}
}
[MetadataType(typeof(ClientInfoViewMetaData))]
public partial class ClientInfoView
{
public int ID { get; set; }
public string Login { get; set; }
}
public class ClientInfoViewMetaData
{
[Required]
[Category("Main Data"), DisplayName("Client ID")]
public int ID { get; set; }
[Required]
[Category("Main Data"), DisplayName("Login")]
public string Login { get; set; }
}
以上是 未使用MetadataType加载元数据 的全部内容, 来源链接: utcz.com/qa/399459.html