【问题标题】:MetadataType for Complex Objects复杂对象的元数据类型
【发布时间】:2015-08-01 16:05:54
【问题描述】:

我有一些复杂的对象。假设我的对象如下:

public class addressModel
{
    public string street {get;set;}
    public string number {get;set;}
    public string state {get;set;}
}

public class contactModel
{ 
    public string firstName {get;set;}
    public string lastName {get;set;}
    public addressModel address {get;set;} 
}

现在我需要从 contactModel 继承的其他类,但其中一个需要 addressModel 而另一个不需要。这很容易通过将 [Required] 属性添加到 MetadataType 类来处理:

[MetadataType(typeof(driverMetadata))]
public class driverModel : contactModel
{
        
}

public class driverMetadata
{
    [Required]
    public addressModel address {get;set;} 
}

但是,如果我需要只需要 addressModel 的街道和号码属性的第三类怎么办?我是否需要创建一个继承自 addressModel 的新类并将 MetadataType 分配给这个新类?

我完全理解我可以创建一个只有这 2 个属性的新地址模型类,但现在想象一个具有几十个属性的类。我们不想创建混合和匹配我们需要的不同属性的临时类。

【问题讨论】:

    标签: c# inheritance model-view-controller metadatatype


    【解决方案1】:

    我终于放弃了,继续学习临时课程。这大大降低了可重用性(从而降低了生产力),但正如我们在智利所说:“最优是好的敌人”。

    【讨论】:

    • 我认为临时课程是最好的选择。您最终可能会得到复杂、脆弱的层次结构 - 基础模型在派生模型中获得更多或做的比您真正想要的更多 - 一旦您陷入这种混乱,就很难摆脱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2018-12-06
    • 1970-01-01
    • 2013-10-30
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多