Использование атрибута DefaultValueAttribute в классе, который используется в качестве типа в атрибуте MetadataTypeAttribute

Я использовал атрибут 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; }
}

Что я делаю не так? Или это не поддерживается (и если да, то где-нибудь задокументировано?)

5
задан Peter T. LaComb Jr. 27 January 2011 в 19:00
поделиться