复杂对象的MetadataType

时间:2015-08-01 16:05:54

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

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

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的street和number属性呢?我是否需要创建一个继承自addressModel的新类并将MetadataType分配给这个新类?

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

任何帮助/指导/建议都将非常感激。

先谢谢,Ariel

1 个答案:

答案 0 :(得分:0)

我终于放弃了这一点,继续进行特设课程。这大大降低了可重用性(从而降低了生产率),但正如我们在智利所说:“最佳是善的敌人”。