У меня есть абстрактный класс для объектов, которые отвечают за создание и возврат уникального ключа для каждого экземпляра Entity. Генерация ключей немного дорогостоящая и основана на значениях свойств конкретного объекта. Я уже отмечаю свойства, участвующие в генерации ключей, с KeyMemberAttribute
, поэтому все, что мне нужно, это сделать EntityBase.Key
= null каждый раз, когда свойство украшено KeyMemberAttribute
изменениями.Перехват имущества на основе атрибутов. Как?
Итак, я получил базовый класс вроде так:
public abstract class EntityBase : IEntity
{
private string _key;
public string Key {
get {
return _key ?? (_key = GetKey);
}
set {
_key = value;
}
}
private string GetKey { get { /* code that generates the entity key based on values in members with KeyMemberAttribute */ } };
}
Тогда я получил конкретные объекты, реализуемые следующим образом
public class Entity : EntityBase
{
[KeyMember]
public string MyProperty { get; set; }
[KeyMember]
public string AnotherProperty { get; set; }
}
мне нужно сделать KeyMemberAttribute
, чтобы установить EntityBase.Key
в null
каждый время изменяется значение свойства.
Спасибо. Просто были некоторые проблемы с размышлениями. Однако из-за того, что другой подход с этим подходом из-за вашего примера кода привел меня к нахождению этого: http://doc.postsharp.net/multicast-reflection –