Spring.Net公共属性setter切入点
问题描述:
您是否知道spring.net中的任何切入点定义仅拦截公共属性setter(标准属性和自动执行属性)?Spring.Net公共属性setter切入点
有没有办法通过名称删除某些属性(Id,Version ...)?
是否有可能将切点缩小到某个基类(EntityBase)的子节点?
正如你所看到的,我不是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);
}
答
你应该看一看与Spring.NET附带的AOP的例子。 AoP Quickstart#6完全符合您的需求。他们位于这个文件夹:\ examples \ Spring \ Spring.AopQuickStart
好的,谢谢,我会看看这个 – Vince 2010-02-16 09:04:57