gpt4 book ai didi

c# - 在用作 MetadataTypeAttribute 中的类型的类上使用 DefaultValueAttribute

转载 作者:太空狗 更新时间:2023-10-29 23:34:36 27 4
gpt4 key购买 nike

我一直在使用 MetadataType 属性向我使用 T4 模板生成的类添加验证属性。这非常有效,但我希望能够在某些属性上使用 DefaultValue 属性,这样我的 MetadataType 类将更完整地描述我的类(这样我就不必在这些类中实现 OnCreated 方法) .我可以将该属性添加到我的 MetadataType 类中,但它没有任何效果。

这是一些示例源 - 生成的部分(当然)在不同的文件中。如果我实例化一个 Widget 对象,Name 属性将为空。

/// <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; }
}

我做错了什么?或者这是否不受支持(如果支持,是否有任何记录?)

最佳答案

将构造函数添加到 WidgetMetaData 类,并在那里设置属性的默认值。 DefaultValueAttribute 用于 Visual Studio 工具箱(我相信)以确定值是否应为粗体(更改)或不(默认值)等。您仍然需要在某些时候设置该属性的值。

public WidgetMetaData() 
{
Name = "Default Value";
}

有关 DefaultValueAttribute 的更多信息:http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute(v=vs.71).aspx

关于c# - 在用作 MetadataTypeAttribute 中的类型的类上使用 DefaultValueAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com