Я использовал атрибут MetadataType для добавления атрибутов проверки в классы, которые я генерирую с использованием шаблона T4. Это прекрасно работает, но я хотел бы иметь возможность использовать атрибут DefaultValue в некоторых свойствах, чтобы мой класс MetadataType более полно описывал мои классы (и чтобы мне не пришлось реализовывать метод OnCreated в этих классах) , Я могу добавить атрибут в мой класс MetadataType, но он не имеет никакого эффекта.
Вот пример источника - сгенерированная часть (конечно) находится в другом файле. Если я создаю экземпляр объекта Widget, свойство Name будет иметь значение null.
/// <summary>
/// This part is generated
/// </summary>
public partial class Widget
{
public string Name { get; set; }
}
/// <summary>
/// This part is hand-coded so I can add attributes, custom methods etc.
/// </summary>
[System.ComponentModel.DataAnnotations.MetadataType(typeof(WidgetMetadata))]
public partial class Widget
{
}
/// <summary>
/// This part is hand-coded, and any validation attributes I add work fine.
/// </summary>
public class WidgetMetadata
{
[System.ComponentModel.DefaultValue("Default Name")]
[StringLengthValidator(0, RangeBoundaryType.Inclusive, 320, RangeBoundaryType.Inclusive, Tag = "Invalid string length", MessageTemplate = "{1} must contain between \'{3}\' to \'{5}\' characters.")]
public string Name { get; set; }
}
Что я делаю не так? Или это не поддерживается (и если да, то где-нибудь документировано?)