【发布时间】:2012-02-03 22:08:00
【问题描述】:
我有一个如下所示的类结构:
class Person
{
public virtual string FirstName {get;set;}
public virtual string LastName {get;set;}
public virtual Address HomeAddress {get;set;}
}
class Address
{
public virtual string Street {get;set;}
public virtual string City {get;set;}
public virtual string State {get;set;}
public virtual string ZipCode {get;set;}
public virtual string Country {get;set;}
}
然后,我想到了一个拥有所需地址的人和一个使用所需地址的人......所以我的新“所需”地址看起来像:
class RequiredAddress
: Address
{
[Required]
public override string Street {...}
[Required]
public override string City {...}
[Required]
public override string State {...}
[Required]
public override string ZipCode {...}
[Required]
public override string Country {...}
}
但是当我刚刚在我的RequiredPerson 地址的Address 字段中新建了一个RequiredAddress 实例时,MVC 似乎无法检测到[Required] 标签,我不得不这样做:
class PersonRequiredAddress
: Person
{
public new RequiredAddress Address {get;set;}
}
现在,因为我们必须这样做,所以我们最终不得不重新执行 DAL 来处理对象的差异……这对我来说就像是一种悲惨的代码味道。谁能为我们面临的这个困境提供更好的解决方案?
【问题讨论】:
标签: c# oop design-patterns