Знаете ли вы какое-нибудь определение pointcut в spring.net для перехвата только установщика общедоступных свойств (стандартные свойства и свойства автоматически внедряемых)?
Есть ли способ удалить это свойство по имени (Id, Version ...)?
Можно ли сузить pointcut для детей определенного базового класса (EntityBase)?
Как вы можете видеть, я не мастер в Spring.net pointcuts ^^ Но я не могу найти информацию.
Идея заключается в том, чтобы сделать автоматический грязный флаг. В приведенном ниже примере цель - установить IsDirty = True только для установщика свойства данных.
Сейчас я использую определение в коде, а не в конфигурационном файле Spring, но я думаю, что оба решения должны быть в порядке.
Существующий код:
[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);
}