문제

Windsor/Microkernel에 대해 읽은 내용에 따르면 이론상으로는 코드가 포함된 xml 파일을 사용하여 수행할 수 있는 모든 작업을 수행할 수 있습니다.사실 - 제가 틀렸다면 정정해 주십시오 - Windsor 계층의 주요 기여는 Microkernel이 이미 수행할 수 있는 작업에 대해 xml 구성을 추가하는 것 같습니다.

하지만 최근에는 코드에서 약간 더 복잡한 기능을 구현하는 방법을 찾는 데 어려움을 겪고 있습니다(예: 기본 생성자 인수 값을 할당하는 방법).이제 프로덕션 릴리스에서 xml을 사용하는 동안 테스트를 위해 코드에 구성 요소를 등록하고 있는데 이것이 상당히 문제가 되고 있습니다.이것은 문서의 불행한 상태와 내가 찾을 수 있는 유일한 기사가 xml 등록에 초점을 맞추고 있다는 사실로 인해 도움이 되지 않습니다.

코드에 항목을 등록하는 방법을 나열하는 소스를 아는 사람이 있습니까(가급적 XML과 동일)?그 존재를 제외하고, Castle Windsor/Microkernel의 XML이 아닌 중요한 사용이 있는 오픈 소스/샘플 프로젝트에 대해 아는 사람이 있습니까?

도움이 되었습니까?

해결책

저는 항상 단위 테스트가 오픈 소스 프로젝트 사용 방법을 배우는 가장 좋은 방법이라는 것을 알았습니다.Castle에는 코드로 모든 작업을 수행할 수 있는 유연한 인터페이스가 있습니다.로부터 WindsorDotNet2테스트 테스트 케이스:

[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);
    }

자세한 내용은 구성요소등록테스트케이스 그리고 모든 유형테스트 케이스

이를 수행하기 위한 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top