ResponseAttributes
というcustomAttributeがあることを確認してください。私は私がやろうとしていることは別のものに等しい属性であることを含むクラスを確認する方法で、インタフェースおよびいくつかの具体的なクラス今{ Question 1, Question2, Question3 }
クラスのcustomAttributeが他のクラスと等しいかどうかを調べる方法は?
[AttributeUsage(AttributeTargets.Property)]
public class ResponseAttribute : Attribute { }
public interface IQuestion { }
public class Question1 : IQuestion
{
[Response]
public string Response { get; set; }
public Question1() { Response = "2+1"; }
}
public class Question2 : IQuestion
{
[Response]
public decimal Response { get; set; }
public Question2() { Response = 5; }
}
public class Question3 : IQuestion
{
[Response]
public string Response { get; set; }
public Question3() { Response = "2+1"; }
}
を宣言していますか?
私は意味:
List<IQuestion> questions = new List<IQuestion>()
{
new Question1(), new Question2()
};
Question3 question3 = new Question3();
foreach (var question in questions)
{
// how to verify this condition:
// if (customAttribute from question3 is equals to customAttribute fromquestion)
// of course the question3 is equals to 1
}
することができますように、彼らはさまざまな種類が、それは私がResponseAttribute
として設定した理由です。これは、あなたが、あなたはクラスレベルを使用することができないことができれば、あなたがResposnseプロパティ(型オブジェクト)と、インタフェースを使用して を試みることができる
なぜ属性が必要なのですか?インターフェイスにResponseプロパティが含まれている場合(つまり、10進レスポンス{get; set;})、インターフェイスによって提供される共通プロパティを通じて変数を比較することができます – kristian
ここでの問題は、すべての質問に応答プロパティがありますが、私はそれがcustomAttributeを持つことが良いと思っていた –
インターフェイスを使用する利点の1つIQuestionは、いくつかの出力に標準の比較可能なデータ型の使用を強制することができます。 Responseがどのように動作するか(異なるデータ型を保持する)を変更したくないかもしれませんが、実装時にレスポンスを比較用の文字列として出力する文字列としてインタフェースプロパティ 'Answer'を追加することを検討するかもしれません。あなたのためにあなたのfor-eachは、 'questionA.Answer == questionB.Answer ...' – EtherDragon