Да, их можно использовать для проверки без использования элементов управления пользовательского интерфейса. У Брэда Абрамса есть сообщение в блоге с подробностями об использовании этих атрибутов для форм данных, но, похоже, вы сможете отделить часть пользовательского интерфейса его сообщения от логики проверки ядра.
Из этого поста приведен пример свойства с логикой проверки, добавленной вручную.
[DataMember()]
[Key()]
[ReadOnly(true)]
public int EmployeeID
{
get
{
return this._employeeID;
}
set
{
if ((this._employeeID != value))
{
ValidationContext context = new ValidationContext(
this, null, null);
context.MemberName = "EmployeeID";
Validator.ValidateProperty(value, context);
this._employeeID = value;
this.OnPropertyChanged("EmployeeID");
}
}
}