2016-09-01 123 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應用和A2中的QuestionText領域應該有PasswordAttribute應用等。 我知道這將通過反射或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();