2

내 클래스에 종속성을 주입하고 싶은 경우 Resharper 또는 DevExpress과 같은 도구에 리팩터가 있는지 여부를 알 수 없습니다. 내가 원하는Resharper 또는 DevExpress를 통한 메서드를 통한 종속성 주입

public class ClassWithInjections 
    { 
     private Dependency _fieldInjected; 

     public void Initialize(Dependency fieldInjected) 
     { 
     _fieldInjected = fieldInjected; 
     } 
    } 

(필드가 이제 방법 Initialize에 의해 초기화 될 수 있습니다) : 나는 같이 할

public class ClassWithInjections 
    { 
     private Dependency _fieldInjected; 
    } 

    public class Dependency 
    { 

    } 

그리고 최종 결과 : 여기

내 클래스 마우스 커서를 사용하여 필드를 지정한 다음 리팩토링 옵션을 활성화 할 수 있어야합니다. 그러면 메소드, 속성 또는 생성자와 종속성을 주입 할 것인지 제안 할 수있는 도구입니다.

Resharper으로, 당신은 할 수있는 '필드 캡슐화'(Ctrl 키 + 시프트 + R) 또는 코드 생성 도구를 사용하여 생성자를 생성 (Alt 키 - 삽입)와하지만 난 돈 내 의존성에 '방법'기법을 주입하는 옵션을 찾지 못했습니다.

아무도 해결책이 있습니까?

+0

@AustinSalonen 이것은 정확하게 내 질문의 끝에 말한 것이지만, 내가 원하는 주사 유형이 아닙니다. – Samuel

+0

아, 잘못 읽었습니다. –

답변

1

DevExpress Refactor! Pro > Create Setter Method 리팩터링 옵션을 사용할 수 있습니다.

+0

Arggggggg !!! Resharper를 항상 가지고있을 때마다 DevExpress를 다시 설치하기를 원할 때마다 Visual Studio는 뚱뚱한 돼지가 느리고 느리게 보이게 만듭니다. Resharper를 유지하고 수동으로 리팩토링을 할 것입니다. 고마워요 미하일. – Samuel

4

우선. 메서드를 사용하여 종속성을 주입하면 안됩니다. Read here. 나는 원형 의존성 문제를 해결하기 위해 단지 속성 주입 만 사용할 것이다.

이렇게하면 생성자가 남습니다.

Resharper가 도와 드릴 수 있습니다. 필드에 ALT+ENTER을 누르고 "생성자에서 초기화"를 선택하십시오.

'방법'기술에 의존성을 주입하는 옵션이 없습니다.

음.)이를 피하면 안되기 때문에 존재하지 않습니다.

+0

제가 제 질문에서 말했듯이, 나는 충전기로 생성자로부터 주입하는 방법을 알고 있으며, 주입의 장단점을 방법의 도움으로 이해합니다. 나는 메소드 삽입이 캡슐화의 개념에서 시간적 결합을 만들 수 있다고 생각하지만, 어쨌든 나는 이것을하려고한다. – Samuel

+0

@jgauffin : 고마워요. 이것은 내 문제를 해결했다! –