覆盖包装器/组合类

时间:2018-04-02 09:42:01

标签: c# entity-framework asp.net-core asp.net-core-2.0

有以下课程:

public class A
{
    [Required]
    public string property { get; set; }      
}

它被其他类使用,如:

public class B 
{
    public A prop { get; set; }
    public A prop2 { get; set; }
}

在我的方案中,B.prop.property应该是必需的B.prop2.property不应该是[Required]

有没有办法覆盖prop2.property属性不是必需的?它还应该影响数据库中记录的记录吗? 如果不是最推荐的处理此类问题的做法是什么?

1 个答案:

答案 0 :(得分:1)

没有。没有办法实现你所说的。你可以通过继承来做到这一点。例如:

public class C : A
{
    public new string property { get; set; }
}

然后:

public class B 
{
    public A prop { get; set; }
    public C prop2 { get; set; }
}

换句话说,该属性必须字面上是不需要该属性的类型。你不能随心所欲地禁用类实例上的属性。