저는 오픈 소스 프로젝트 사용법을 배우는 가장 좋은 방법을 단위 테스트에서 항상 발견했습니다. Castle에는 유창한 인터페이스가있어서 코드에서 모든 것을 할 수 있습니다. WindsorDotNet2Tests 테스트 케이스에서 :
[Test]
public void ParentResolverIntercetorShouldNotAffectGenericComponentInterceptor()
{
WindsorContainer container = new WindsorContainer();
container.AddComponent<MyInterceptor>();
container.Register(
Component.For<ISpecification>()
.ImplementedBy<MySpecification>()
.Interceptors(new InterceptorReference(typeof(MyInterceptor)))
.Anywhere
);
container.AddComponent("repos", typeof(IRepository<>), typeof(TransientRepository<>));
ISpecification specification = container.Resolve<ISpecification>();
bool isProxy = specification.Repository.GetType().FullName.Contains("Proxy");
Assert.IsFalse(isProxy);
}
등을위한
은 체크 아웃하여
ComponentRegistrationTestCase 및
AllTypesTestCase
정말 사물과 이벤트를 단순화,이 나의 선호하는 옵션은 그 일을위한 DSL도 있습니다
입니다 쉽게 확장 할 수 있습니다. DSL은 Binsor라고 불리우며 여기에서 더 자세히 읽을 수 있습니다 : http://www.ayende.com/Blog/archive/7268.aspx 다시 한번, 정보를위한 가장 좋은 장소는 단위 테스트입니다. 이것은 무슨 수 binsor와의 코드 예입니다
for type in AllTypesBased of IController("Company.Web.Controller"):
component type
그 두 라인은 지금까지 등록이 컨테이너에 IController 인터페이스를 상속 입력합니다 : D
감사가 좋은 반응을 주셔서 감사를! 나는 그것을 파헤쳐 야 할 것이다. WindsorContaienr의. 등록 방법은 어디에서 오는가? 나는 내 인텔리 센스를 통해 그것을 보지 못한다. 확장 방법입니까? –
와우 ... 캐슬 리포지토리가 다운되었습니다. "리포지토리가 비활성화되었습니다 (관리자에 의해)." –