2016-09-01 2 views
0

Я хотел бы добавить различные DataAnnotations атрибутов для различных экземпляров моего класса ответа, который заключается в следующем:Как добавить DataAnnotations атрибутов конкретных свойств в C# класса

public class AnswerViewModel() 
    { 
    public String QuestionText {get;set;} 
    public String AnswerText {get;set;} 
    } 

Я хочу, чтобы назначить различные атрибуты для QuestionText поле в разных экземплярах этого класса. Как и в

AnswerViewModel a1 = new AnswerViewModel(); 
AnswerViewModel a2 = new AnswerViewModel(); 

Я хочу, чтобы поле QuestionText в a1 иметь DateTimeAttribute применяется и в а2 поле QuestionText должны иметь PasswordAttribute применять и так далее. Я знаю, что это будет сделано через Reflection или TypeDescriptor, но я полностью потерял, как это будет сделано.

ответ

2

Невозможно. Аннотации данных будут применяться ко всем экземплярам. Единственный способ, которым Вы могли бы сделать то, что вы ищете, чтобы использовать отдельные модели Вид:

public abstract class BaseAnswerViewModel 
{ 
    public abstract string QuestionText { get; set; } 
    public string AnswerText { get; set; } 
} 

public class DateTimeAnswerViewModel : BaseAnswerViewModel 
{ 
    [DataType(DataType.DateTime)] 
    public override string QuestionText { get; set; } 
} 

public class PasswordAnswerViewModel : BaseAnswerViewModel 
{ 
    [DataType(DataType.Password)] 
    public override string QuestionText { get; set; } 
} 

Тогда:

var a1 = new DateTimeAnswerViewModel(); 
var a2 = new PasswordAnswerViewModel();