2016-09-01 7 views
0

に属性は次のようである私の答えクラスの異なるインスタンスに属性:私はQuestionTextに異なる属性を割り当てたいは、私は別のDataAnnotationsを追加したいC#クラス内の特定のプロパティ

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

このクラスの異なるインスタンス内のフィールド。

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

のように私はDateTimeAttributeを持っているA1にQuestionTextフィールドをしたいが適用されるとQuestionTextフィールドA2にPasswordAttributeそうに適用している必要があります。 これは、Reflectionまたは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(); 
関連する問題