如何将非静态枚举值与 DefaultValue 数据注释一起使用?

发布于 2024-09-11 10:28:04 字数 387 浏览 6 评论 0原文

public enum ProductQuantityType {
    Weight = 1,
    Volume = 2,
    Custom = 0
}

失败

[MetadataType(typeof(ProductMetaData))]
public partial class Product {
    public class ProductMetaData {
        [DefaultValue(ProductQuantityType.Weight)]
        public object QuantityType { get; set; }
    }
}

错误:非静态字段、方法或属性需要对象引用

public enum ProductQuantityType {
    Weight = 1,
    Volume = 2,
    Custom = 0
}

This fails

[MetadataType(typeof(ProductMetaData))]
public partial class Product {
    public class ProductMetaData {
        [DefaultValue(ProductQuantityType.Weight)]
        public object QuantityType { get; set; }
    }
}

Error: An object reference is required for the non-static field, method, or property

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰沐子 2024-09-18 10:28:04

我的猜测,这可能是因为您的 QuantityType 字段是一个 object (引用类型),但您的枚举是一个值类型。显然,您应该将该 auto-impl-prop 设置为 intProductQuantityType

    [DefaultValue(ProductQuantityType.Weight)]
    public ProductQuantityType QuantityType { get; set; }

您知道当您实例化新的 ProductMetadata 时 DefaultValue 不会设置此字段吗?如果您希望它始终具有初始值,则应该在构造函数中设置它。

My guess, this is probably because your QuantityType field is an object (reference type), but your enum is a value type. You should obviously be making that auto-impl-prop either an int, or a ProductQuantityType.

    [DefaultValue(ProductQuantityType.Weight)]
    public ProductQuantityType QuantityType { get; set; }

You are aware that DefaultValue is not going to set this field when you instantiate a new ProductMetadata right? If you want it to always have an initial value, you should be setting it in the constructor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文