문제

내 예외 처리가 컨텍스트에 의존하게 만들려고 노력하고 있습니다. 공장 클래스가 예외 처리기를 구성하고 있습니다. 핸들러는 마지막으로 던진 예외 유형에 의해 구성되어야합니다. 구조를 구성하는 클래식 방식으로 잘 작동합니다. 조건부 구성을 사용하려고하면 내 코드가 실패하고 그 이유를 알 수 없습니다! 내가 무엇을 놓치고 있습니까? 내 주요 실수는 어디에 있습니까?

안부, -Jan

작업 코드 :

ObjectFactory.Initialize(x => 
    x.ForRequestedType<IExceptionHandler>()
        .TheDefault.Is.OfConcreteType<MyExceptionHandler>());

비 작업 코드

ObjectFactory.Initialize(x =>
    x.ForRequestedType<IExceptionHandler>().TheDefault.Is.Conditional(o =>
        o.TheDefault.Is.OfConcreteType(MyExceptionHandler)));

인스턴스 얻기 :

IExceptionHandler handler = ObjectFactory.With("exception").EqualTo(exception).GetInstance<IExceptionHandler>();

그래서 나는 더 구체적이 되려고 노력할 것입니다.

BasexceptionHandler, MyExceptionHandler가 기본에서 상속되고 System.Exception에서 MyException을 상속받습니다. 지금 당장 핸들러를 얻으려면 오류가 발생합니다.
수업은 아래에 표시된 것처럼 보입니다 ...

public class MyException : System.Exception
{
    public MyException()
    {...}
    ...
}

public class BaseExceptionHandler
{
    public BaseExceptionHandler(Exception exception)
    {...}
    ...
}

public class MyExceptionHandler : BaseExceptionHandler
{
    public MyExceptionHandler(MyException exception) : base(exception)
    {...}
    ...
}
도움이 되었습니까?

해결책

귀하의 문제는 조건부 등록과 관련이 없습니다. 그것은 당신이 예외를 통과하는 방식과 관련이 있습니다. .with (String ParameterName) 구문은 원시 유형 (문자열, int 등)과 함께 사용해야합니다. 예외적으로, 당신은 with (t indest) 구문을 원합니다 :

IExceptionHandler handler = ObjectFactory.With<Exception>(exception).GetInstance<IExceptionHandler>();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top