1

다음 목표가 나는 두 개의 클래스는 다음과 같은 같은 정적 메소드를 구현 한

Class A 
{ 
    static OpB(); 
} 

Class B 
{ 
    static OpB(); 
} 

나는를 ClassA와 ClassB가 구성을 사용하여 전환 IOC의 패턴을 사용할 수를 달성하기 위해 IOC의 패턴을 사용할 수 있습니까? 또는 해결 방법이나 제안 사항이 있으십니까?

+0

정적 메서드로 클래스를 전환 할 수 없습니다. 클래스를 인스턴스와 관련되게 만들고 두 클래스가 같은 인터페이스 또는 클래스에서 파생되도록합니다. 메서드 이름과 매개 변수가 동일한 경우 리플렉션을 사용하여 일부 구성에 따라 다른 클래스의 정적 메서드를 호출 할 수 있습니다. –

답변

2

IoC 패턴은 유형 (서비스) 인 인스턴스를 만드는 데 초점을 맞추기 때문에 정적 메서드 사용을 거의 금지합니다. 정적 메서드는 인스턴스 메서드가 아니므로 IoC 컨테이너는 인스턴스를 제공하지만 인스턴스에서 정적 메서드를 호출 할 수는 없습니다.

정적 한정자를 OpB() 메서드에 드롭 할 수 있다면 IoC를 사용하여 원하는 것을 할 수 있습니다.

+0

정적을 삭제하면 기존 코드가 깨집니다. – user496949

+0

기존 코드를 변경하는 것이 옵션이 아닌 경우 기존 클래스 주위에 래퍼를 만들 수 있습니다. –