Знаете ли вы определение pointcut в Spring.net для перехвата только публичного объекта setter (стандартные свойства и свойства автоматического выполнения)?SpringNet public setter pointcut
Есть ли способ после этого удалить какое-либо свойство по имени (Id, Version ...)?
Возможно ли ограничить pointcut для детей определенного базового класса (EntityBase)?
Как вы можете видеть, я не мастер в pointpoints spring.net ^^ Но я не могу найти информацию.
Идея заключается в том, чтобы сделать автоматический грязный флаг. В приведенном ниже примере цель состоит в том, чтобы установить IsDirty = True только для средства определения свойств данных.
Я использую определение теперь в коде не в конфигурационном файле весны, но оба решения должны быть в порядке, я думаю.
Существующий код:
[Serializable]
public class EntityBase
{
public string Id { get; set; }
public long Version { get; set; }
public bool IsDeleted { get; set; }
public bool IsDirty { get; set; }
}
[Serializable]
public class Entity : EntityBase
{
public string Data { get; set; }
}
public class DirtyInterceptor : IMethodInterceptor
{
#region IMethodInterceptor Members
public object Invoke(IMethodInvocation invocation)
{
object returnValue = invocation.Proceed();
((EntityBase)invocation.Target).IsDirty = true;
return returnValue;
}
#endregion
}
...
foreach (object item in keyCache.CachedModel.Values)
{
ProxyFactory factory = new ProxyFactory(item);
factory.AddAdvisor(new DefaultPointcutAdvisor (new SdkRegularExpressionMethodPointcut(???), new DirtyInterceptor()));
T ent = (T)factory.GetProxy();
returnList.Add(ent);
}
Хорошо спасибо, я посмотрю на это – Vince