私のアプリケーションでは、いくつかのモデルにはPassword
のプロパティ(たとえば、Registration
とChangePassword
モデル)が必要です。 Password
プロパティの属性は、DataType
およびRequired
です。したがって、再利用性の一貫性を確保するために、私が作成した:インターフェイスメンバーの属性が機能しません
interface IPasswordContainer{
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
string Password { get; set; }
}
そして
class RegistrationModel : IPasswordContainer {
public string Password { get; set; }
}
を残念ながら、属性は動作しません。
は、その後、私はクラスにインターフェースを変更してみました:
public class PasswordContainer {
[Required(ErrorMessage = "Please specify your password")]
[DataType(DataType.Password)]
public virtual string Password { get; set; }
}
そして
public class RegistrationModel : PasswordContainer {
public override string Password { get; set; }
}
今、それが働いています。それはなぜそうですか?
属性がクラスから継承されても、インターフェイスから継承されても機能しないのはなぜですか?
http://stackoverflow.com/questions/540749/can-ac-sharp-class-inherit-attributes-from-its-interface – KyorCode
http://bradwilson.typepad.com/blog/2011 /08/interface-attributes-class-attributes.html便利である – KyorCode
@KyorCode:検索中に最初のコメントに投稿した質問を見つけることができませんでした。関連する質問のリストにも含まれていません。私はあなたが審査した質問の正確な重複としてこの質問をマークしました。 – Mohayemin