Я видел атрибут [MetadataType(T)]
для MVC, все хорошо, но мне было интересно, есть ли какие-нибудь выдающиеся последствия самоссылки на класс, в который он помещен. Я использовал это, попробовал это, и это чудесно работает. Слишком хорошо, чтобы быть правдой, на самом деле. Итак, что я в основном хочу знать ... я делаю что-то опасное со следующим кодом?
[MetadataType(typeof(RegisterViewModel))]
public class RegisterViewModel : IMember {
[Required]
[DataType(DataType.EmailAddress)]
[RegularExpression(Text.RegularExpressions.Email, ErrorMessage = Text.ErrorMessages.Email)]
[Display(Name = "Email Address")]
[Rules("The name you'll login with. You can't use: <em>[ ] | ; , $ \\ < > \"</em>")]
public string Email { get; set; }
[Required(ErrorMessage = "You must enter a password.")]
[StringLength(32, MinimumLength = 6)]
[DataType(DataType.Password)]
[RegularExpression(Text.RegularExpressions.Password, ErrorMessage = Text.ErrorMessages.Password)]
[Display(Name = "Enter your password")]
[Rules("Passwords must be between 6 and 32 characters, may contain any alphanumeric character and the symbols <em>@ # $ %</em> only.")]
public string Password { get; set; }
[Required(ErrorMessage = "You must confirm your password.")]
[StringLength(32, MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Re-enter your password")]
[RegularExpression(Text.RegularExpressions.Password, ErrorMessage = Text.ErrorMessages.Password)]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}