Применять пользовательские атрибуты к свойствам программно - PullRequest
1 голос
/ 27 октября 2011

Я использую API бизнес-объектов, где у меня нет доступа к коду. Я использую эти объекты непосредственно в моих видах бритвы и хочу иметь возможность применять мои собственные атрибуты displayName после создания экземпляров объектов.

Итак, вместо этого:

[DisplayName("First Name")]
public string GivenName;

Я бы хотел сделать:

Profile.GivenName.DisplayName("FirstName");

Я понимаю, как создавать пользовательские атрибуты, но у меня проблемы с их программированием.

Как только я смогу это сделать, я смогу применить больше своих аннотаций к данным.

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Почему бы вместо этого не извлечь класс из бизнес-объекта и использовать атрибут MetaDataType ?

[MetadataType(typeof(IMyAttributes))
public DerivedClass : BusinessClass
{
}

public interface IMyAttributes
{
  [Required]
  public string Name { get; set; }
}
0 голосов
/ 27 октября 2011

Вы можете создать свой собственный ModelMetadataProvider и заставить его искать метаданные из другого источника.

См. Абстрактный класс здесь: http://msdn.microsoft.com/en-us/library/system.web.mvc.modelmetadataprovider.aspx

Поставщик по умолчанию использует DataAnnotations, но выс таким же успехом можно написать тот, который смотрит на базу данных SQL или файл XML или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...