如何向C#类中的特定属性添加DataAnnotations属性
我想向我的答案类的不同实例添加不同的DataAnnotations属性,如下所示:如何向C#类中的特定属性添加DataAnnotations属性,c#,asp.net-mvc,reflection,system.reflection,C#,Asp.net Mvc,Reflection,System.reflection,我想向我的答案类的不同实例添加不同的DataAnnotations属性,如下所示: public class AnswerViewModel() { public String QuestionText {get;set;} public String AnswerText {get;set;} } 我想在这个类的不同实例中为QuestionText字段分配不同的属性。 喜欢 我希望a1中的QuestionText字段应用DateTimeAttribute,a2中的Q
public class AnswerViewModel()
{
public String QuestionText {get;set;}
public String AnswerText {get;set;}
}
我想在这个类的不同实例中为QuestionText字段分配不同的属性。
喜欢
我希望a1中的QuestionText字段应用DateTimeAttribute,a2中的QuestionText字段应用PasswordAttribute,依此类推。
我知道这将通过反射或TypeDescriptor完成,但我完全不知道如何完成。不可能。数据注释将应用于每个实例。实现所需功能的唯一方法是使用单独的视图模型:
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; }
}
然后:
不可能。数据注释将应用于每个实例。实现所需功能的唯一方法是使用单独的视图模型:
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();