Как передать эту дилемму проверки в DataAnnotations - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть структура класса, которая выглядит следующим образом:

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;}
}

Тогда у меня есть идея о человеке с Обязательным адресом и о человеке, который использует RequiredAddress ... поэтому у меня есть новый "Обязательный""адрес выглядит так:

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 {...}
}

, но когда я только что обновил экземпляр RequiredAddress в поле Address моего адреса RequiredPerson, MVC не смог обнаружить теги [Required], и я завелсянеобходимость сделать это:

class PersonRequiredAddress
    : Person
{
public new RequiredAddress Address {get;set;}
}

Теперь, потому что мы должны были сделать это, мы оказались вынуждены повторно выполнить наш DAL для обработки различий в объектах ... который кажется ужасным запахом кода длямне.Кто-нибудь может предложить лучшее решение этой проблемы, с которой мы сталкиваемся?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Не могли бы вы изменить Person на class Person<TAddress> where TAddress : Address?Тогда class PersonRequiredAdderss : Person<RequiredAddresss>.

0 голосов
/ 03 февраля 2012

Взгляните на динамическое присоединение аннотаций данных

Кто-то еще получил ответ на этот вопрос здесь DataAnnotations динамически присоединяемых атрибутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...