2010-02-12 3 views
1

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); 
      } 

답변

1

. AoP 퀵 스타트 # 6은 당신이 찾고있는 것과 똑같습니다. 이 폴더에 있습니다 : \ examples \ Spring \ Spring.AopQuickStart

+0

감사합니다.이 부분을 볼 것입니다. – Vince

관련 문제