Pet*_*Jr. 5 c# .net-4.0 metadatatype
我一直在使用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; }
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?或者这是不支持的(如果有的话可以在任何地方记录?)
向类添加构造函数WidgetMetaData并在其中设置属性的默认值。用于DefaultValueAttributeVisual Studio 工具箱(我相信)确定该值是否应该加粗(更改)或不加粗(默认值)等。您仍然需要在某个时候设置该属性的值。
public WidgetMetaData()
{
Name = "Default Value";
}
Run Code Online (Sandbox Code Playgroud)
更多信息DefaultValueAttribute:http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute (v=vs.71).aspx
| 归档时间: |
|
| 查看次数: |
3835 次 |
| 最近记录: |