나는 AOP와 수년간 함께 해왔지만 솔루션에 100 % 만족하지 못했습니다. AOP와 같은 런타임 위빙을 사용하는 프레임 워크는 클래스 인터페이스를 변경할 수 없습니다. 포스트 컴파일 타임즈 Postsharp와 같은 프레임 워크 (누군가 다른 사람을 알고 있습니까?) 할 수 있습니다. 이 샘플을 체크 아웃하면 클래스에 INotifyPropertyChanged 구현이 추가됩니다. ->http://www.postsharp.net/model/inotifypropertychangedAOP 사전 컴파일 시간 짜기?
이 AOP 기능은 정말 좋은 것입니다,하지만 당신은 호스팅 어셈블리 내 새로운 인터페이스에 액세스하려면 인터페이스가 컴파일 이후에 추가되기 때문에, 당신은, 를 컴파일 할 수 없습니다 ... 곧 문제에서 실행 . "PropertyChanged is not defined"오류가 발생합니다. 그래서 클래스를 다른 어셈블리로 분리함으로써 이러한 문제를 해결할 수 있습니다. 따라서 AOP의 이점을 활용할 수 있습니다. 어셈블리의 반영된 정보를 기반으로 소스 코드를 생성하는 T4-Template을 사용하여 동일한 "포스트 컴파일 시간"문제가 발생했습니다. 좋아요, 그래서 컴파일 시간이 늦어 지기도합니다 ...
내가 찾고있는 것은 클래스의 소스 코드가 Visual Studio 사용자 정의 도구를 통해 구문 분석 된 다음 C# 코드를 생성하는 솔루션입니다. 파일, 부분 클래스. (따라서 모든 AOP 적용 클래스는 부분적이어야합니다)
"Pre-Compile-Time AOP"입니다. 이것은 분명히 가능해야하며 NRefactory를 코드 파서로 사용하여 수행 할 수 있습니다. 또한 Visual Studio는 포스트 컴파일 수정보다 훨씬 더 좋아할 것입니다.
따라서이 솔루션은 컴파일 후 직공 직종의 단점을 제거합니다. 하지만 AOP의 모든 기능을 제공하지는 않습니다. 그러나 AOP- 프레임 워크와 함께, 이것은 awsome이어야합니다.
누구나 이와 같은 프레임 워크 또는 토론을 알고 있습니까?! 당신은 어떻게 생각하십니까?
종류에 관해서는, PostSharp의 경우 토마스
감사합니다. 이건 아키텍처에 영향을 미칩니다. 코드에 복잡성 (= 캐스트)을 추가하기 때문입니다. Anders Hejlsberg에게 "컴파일러를 여는 중"이라고 물어 본 점 중 하나입니까? 인용구 : "코드 계약 관계자는 아마도 컴파일러를 후킹 할 수있는 능력을 인정했을 것입니다.이 필요성은 대체로 무시되고 있습니다." 출처 : http://www.postsharp.net/blog/post/Anders-Hejlsberg-Dead-Body –