这是它现在如何工作的示例:
[MetadataType(typeof(PersonMetadata))]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonMetadata
{
[Required]
public string Name { get; set; }
[Range(0,150]
public int Age { get; set; }
}
但是,我不希望将 MetadataAttribute 放在 Person 类上,而是希望通过某种方式告诉 MVC 框架“嘿,如果您遇到 Person 类,元数据在 PersonMetadata 类中”。
它只是颠倒了对我来说更具组合性并遵循开闭原则的方向,因为我不必触摸 Person 类来用元数据“扩展”它。
我知道这会造成可能附加多个相互冲突的元数据的问题,也会增加复杂性,但灵活性总是要付出代价的。
我想要一种程序化或声明性的方式,或者最好两者兼而有之:)
所以一个可能是这样的:
MetadataTypeMappings.Add(typeof(Person), typeof(PersonMetadata));
另一个可能是:
[MetadataFor(typeof(Person)]
public class PersonMetadata
{
[Required]
public string Name { get; set; }
[Range(0,150]
public int Age { get; set; }
}