public 속성 setter (표준 속성 및 자동 구현 속성) 만 가로 챌 수있는 spring.net의 pointcut 정의를 알고 있습니까?Spring.Net public 속성 setter pointcut
이름 뒤에 일부 속성을 제거하는 방법이 있습니까 (Id, 버전 ...)?
특정 기본 클래스 (EntityBase)의 자식에 대한 pointcut을 좁힐 수 있습니까?
내가 볼 수 있듯이 나는 spring.net pointcuts에서 마스터가 아니므로 ^^하지만 정보를 찾을 수 없습니다.
그 배경은 자동 더티 플래그를 만드는 것입니다. 아래의 예에서 목표는 데이터 속성 설정자에 대해서만 IsDirty = True로 설정하는 것입니다.
저는 스프링 설정 파일이 아닌 코드에서 정의를 사용하고 있지만 두 솔루션 모두 괜찮을 것이라고 생각합니다.
기존 코드 : 당신은 Spring.NET와 함께 제공되는 AOP 예제를 살펴한다
[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