2016-09-01 4 views
0

ich verschiedene DataAnnotations an verschiedene Instanzen Meine Antwort Klasse Attribute hinzufügen wollte hinzufügen, die wie folgt:Wie DataAnnotations Attribute auf bestimmte Eigenschaften in einer C# Klasse

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

ich verschiedene Attribute der QuestionText zuweisen möchten Feld in verschiedenen Instanzen dieser Klasse. Wie in

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

Ich möchte das QuestionText Feld in a1 die DateTimeAttribute haben angewendet und in a2 der QuestionText Feld sollte die PasswordAttribute haben angewendet und so weiter. Ich weiß, dass dies über Reflection oder den TypeDescriptor erfolgen wird, aber ich bin völlig verloren, wie es gemacht wird.

Antwort

2

Nicht möglich. Eine Datenannotation gilt für jede Instanz. Der einzige Weg, können Sie erreichen, was Sie suchen ist separate Ansicht Modelle zu verwenden:

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

Dann:

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