您是否知道 spring.net 中的任何切入点定义仅拦截公共属性设置器(标准属性和自动实现属性)?
在此之后有没有办法按名称(Id,Version ...)删除某些属性?
是否可以将切入点缩小到某个基类(EntityBase)的子类?
如您所见,我不是 spring.net 切入点的大师 ^^ 但我找不到信息。
其背后的想法是制作一个自动脏标志。在下面的示例中,目标是仅为数据属性设置器设置 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);
}