复杂对象的元数据类型

本文关键字:数据类型 对象 复杂 | 更新日期: 2023-09-27 18:05:48

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

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,另一个不需要。这很容易通过向MetadataType类添加[Required]属性来处理:

[MetadataType(typeof(driverMetadata))]
public class driverModel : contactModel
{
        
}
public class driverMetadata
{
    [Required]
    public addressModel address {get;set;} 
}

但是如果我需要第三个类,只需要addressModel的street和number属性,该怎么办?我需要创建一个继承addressModel的新类并将元数据类型分配给这个新类吗?

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

复杂对象的元数据类型

我最终放弃了这一点,并继续使用特殊类。这大大降低了可重用性(从而降低了生产率),但正如我们在智利所说:"最优是好的敌人"。