2009-07-23 2 views
1

나는 Castle.DynamicProxy2를 사용하고 내가 같은 내 프록시를 인스턴스화하고 있습니다 :Castle.DynamicProxy2와 추가 속성은

private static T GenerateProxy() 
{ 
    ArrayList addtlInterfaces = new ArrayList(); 

    addtlInterfaces.Add(typeof (INotifyPropertyChanged)); 
    addtlInterfaces.Add(typeof (EntityStatus)); 

    object entityProxy = ProxyGenerator.CreateClassProxy(typeof(T), 
                  addtlInterfaces.ToArray(typeof(Type)) as Type[], 
                  ProxyGenerationOptions.Default, 
                  new IInterceptor[] { new LazyInterceptor() }); 


    return (T)entityProxy; 
} 

IEntityStatus 내 인터페이스를 보이는 등과 같습니다 :

public interface IEntityStatus 
{ 
    bool IsDirty 
    { get; set;} 
} 

DTO에 속성이 변경되면 이벤트가 DTO를 더티로 설정할 수 있도록 런타임 중에 해당 속성을 사용할 수 있어야합니다. 그러나 인터페이스이고 명시 적 구현이 없기 때문에이 작업을 수행하는 방법이 손실되었습니다. get 및 set 메서드에 대한 대리자를 만드는 것은 피하고 싶은 옵션입니다. 그래서 내가 성취하고자하는 것을 성취 할 수있는 다른 방법이 있습니까?

나는 내 모든 활성 DTO의 컬렉션을 설정할 수 있다는 것을 알았고이 속성이 DTO 중 하나에서 이벤트 실행을 변경하면이 특정 DTO가 더티라는 것을 보여주기 위해 해당 컬렉션을 업데이트 할 수 있었지만 정말 정보는 순수한 구문 용이성을 위해 프록시 된 DTO의 일부가 될 수 있습니다.

답변을 기다리십시오!

답변

2

나는 당신이 INotifyPropertyChanged를 다루는 방법을 모르지만 두 인터페이스 모두에 mixin을 사용할 것이다. 하나는 다른 사람의 이벤트에 구독한다. 그것은 가능한 솔루션입니까?