그래서 낸시를위한 윈저 부트 스트랩퍼와 함께 this issue을 만났습니다. 나는 잘못 된 것을 재현 할 수있는 작은 테스트 프로젝트를 함께 채찍질했다. here 프로젝트를 찾을 수 있습니다. 잘못 것으로 보인다 무엇캐슬 윈저 IInterceptor 구성 (낸시 버그)
은 이것이다 : DynamicProxy 만하여 void Handle(Action<string> oncomplete)
방법의 호출이 아닌 다른 스레드에
을 호출되는
string Handle(string input)
방법을 잡을 것으로 보인다.
마치
스크래치 : 그것은 동일한 클래스의 다른 메소드를 호출하는 것만으로 프록시가되지 않습니다.
Engine
이 다른 스레드로 전송 된 후 더 이상 프록시되지 않습니다.
이 프로그램의 출력 만
Handled Handle with return type System.Void
test
하지
Handled Handle with return type System.Void
Handled Handle with return type System.String
test
수단이 동적 프록시의 예상 된 동작인가? 다른 스레드의 해당 프록시는 더 이상 잘 프록시되지 않습니다. 아니면 코드에 문제가 있습니까?
편집 : 그냥 RTFM 할 동적 프록시, 그리고 Works As Intended 것 같습니다. 이제 올바른 종류의 프록시를 사용하도록 IEngine 인스턴스를 어떻게 구성합니까?
죄송합니다, 내 프로젝트에 대한 링크가 올바른 개정에되지 않았습니다. 보았던 개정판에는 실제로 작동하는 코드가 포함되어 있지만, 내가 본 개정판에서와 같이'Engine'을 서브 클래스 화하고 싶지는 않습니다. – Lodewijk
현재 링크가 맞습니까? – Marwijn
Jep, 방금 편집했습니다. 문제는 엔진을 하위 클래스로 만들면 DynamicProxy가 더 이상 필요하지 않다는 것입니다. 그래서 가능하면 피하고 싶습니다. – Lodewijk