【问题标题】:Remove required attribute from a property at runtime在运行时从属性中删除所需的属性
【发布时间】:2019-11-25 13:50:01
【问题描述】:

我希望能够在有条件的情况下从类型的属性中删除所需的属性。假设我有一堂这样的课;

public partial class UserTest
{
    [Key]
    public int USERID { get; set; }

    [StringLength(250)]
    public string USERNAME { get; set; }

    [StringLength(250)]
    public string USERSURNAME { get; set; }

    [Required]
    [StringLength(50)]
    public string TEST { get; set; }
}

我想要做的是,我希望能够在运行时从名为 TEST 的属性中删除 [Required] 属性,这样当我初始化 UserTest 对象时,编译器就不会强制执行我给TEST 属性赋值。它不一定要从字面上“删除”该属性,但也欢迎使用其他方法,例如在运行时为其赋予默认值。我将如何完成这样的任务?

提前致谢。

【问题讨论】:

  • 您不能在运行时删除属性,抱歉。您可以继承 Attribute 并创建自己的。
  • 你不能在运行时移除一个属性;它们在编译时进行评估。您将需要创建自己的自定义属性或使用其他形式的验证。

标签: c#


【解决方案1】:

属性在编译时设置。它绑定到类级别的类型,而不是实例。

您应该实现自己的ValidationAttribute(即对其进行子类化)。在其IsValid 方法中,您可以根据需要返回true 或false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多