2010-01-08 7 views
1

프록시의 속성 유형을 프록시 할 필요가 있습니다. 그래서 경우는 다음과 같습니다 예를 들어, Name 속성,DynamicProxy2 및 프록시 체인

public interface IMyInterface 
{ 
    public String Name {get; set;} 
    public Int Id {get;set;} 
} 

내가 잘 인터페이스를 조롱 수 있지만 내가 조롱 할 수 있도록하려면 :

내가 IMyInterface 인터페이스를 가지고있다. 나는 String이 봉인 되었기 때문에 조롱받을 수 없다는 것을 알았다. 내가보고 싶은 기능은 다음과 같습니다.

IMyInterfaceMock.Name.Equals() 

은 인터셉터에서 처리해야합니다. 나는 이것이 기존의 프레임 워크에서도 가능하다는 것을 상상할 수 없다. 왜냐하면 나는 부동산의 유형을 바꿀 것이기 때문에 이것을 달성 할 수있는 영리한 방법이 있는지 궁금해하고 있었다. 프록시 생성에 끼어들 수 있으며 프록시의 반환 유형을 수정할 수있는 방법이 있습니까?

DynamicProxy2는 그럴 수 있다고 생각하지 않지만, 누군가 마술을 알고 있는지 궁금해하고있었습니다.

답변

0

형식이 잘못된 재정의가 될 것이라는 것을 알고 있습니다. 내가 정말로 찾고 있던 것은 동적 유형을 생성하는 방법이었습니다. System.Reflection.Emit 클래스를 사용하여이 작업을 수행했습니다.

속성 유형이 잘 알려진 유형의 유형 인 동적 유형을 생성하여 차단할 수 있습니다.

프록시 개체를 PowerShell 파이프 라인에 쓰고 있었기 때문에 방출 된 형식에 대해서는 실제로 신경 쓰지 않았 음을 설명해야합니다. 비교 연산자를 평가하는 방법이 필요합니다.

1

a. 유효하지 않은 대체를 의미하기 때문에 리턴 된 유형을 수정할 수 없습니다. b. 비록 당신이 할 수있다하더라도, 당신은 봉인 된 문자열에 어떤 것도 오버라이드 할 수 없으므로 CLR에서는 보통의 강력한 타입의 프로그래밍 언어를 사용해서는 불가능합니다.