如何向C#类中的特定属性添加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

我想向我的答案类的不同实例添加不同的DataAnnotations属性,如下所示:

 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();