如何将 DataAnnotations 属性添加到 C# 中的特定属性 class
How to add DataAnnotations attributes to specific properties in a C# class
我想为 My Answer class 的不同实例添加不同的 DataAnnotations 属性,如下所示:
public class AnswerViewModel()
{
public String QuestionText {get;set;}
public String AnswerText {get;set;}
}
我想在此 class 的不同实例中为 QuestionText 字段分配不同的属性。
喜欢
AnswerViewModel a1 = new AnswerViewModel();
AnswerViewModel a2 = new AnswerViewModel();
我希望 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; }
}
然后:
var a1 = new DateTimeAnswerViewModel();
var a2 = new PasswordAnswerViewModel();
我想为 My Answer class 的不同实例添加不同的 DataAnnotations 属性,如下所示:
public class AnswerViewModel()
{
public String QuestionText {get;set;}
public String AnswerText {get;set;}
}
我想在此 class 的不同实例中为 QuestionText 字段分配不同的属性。 喜欢
AnswerViewModel a1 = new AnswerViewModel();
AnswerViewModel a2 = new AnswerViewModel();
我希望 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; }
}
然后:
var a1 = new DateTimeAnswerViewModel();
var a2 = new PasswordAnswerViewModel();