저는 Unity 의존성 주입 프레임 워크를 사용하고 있습니다. 두 클래스가 있습니다. 각 클래스는 생성자에서 동일한 위임 매개 변수를 사용합니다. 해결 될 때 각 클래스는 다른 메소드를 가져야합니다. 속성을 사용하지 않고 이것을 설정할 수 있습니까? 만약 당신이 속성으로 어떻게 할 것인가?유니티와 델리게이트
3
A
답변
3
그래, 당신은 속성이나 생성자 매개 변수를 [Dependency] 속성으로 꾸밀 수 있습니다.
이 예 대리자를 사용하지 않고, 단지 대신 인터페이스를 사용하고 있지만, 다른 이름으로 등록되는 동일한 인터페이스의 두 나타내고, 클래스 생성자에서 특별히 요구 :
[TestClass]
public class NamedCI
{
internal interface ITestInterface
{
int GetValue();
}
internal class TestClassOne : ITestInterface
{
public int GetValue()
{
return 1;
}
}
internal class TestClassTwo : ITestInterface
{
public int GetValue()
{
return 2;
}
}
internal class ClassToResolve
{
public int Value { get; private set; }
public ClassToResolve([Dependency("ClassTwo")]ITestInterface testClass)
{
Value = testClass.GetValue();
}
}
[TestMethod]
public void Resolve_NamedCtorDependencyRegisteredLast_InjectsCorrectInstance()
{
using (IUnityContainer container = new UnityContainer())
{
container.RegisterType<ITestInterface, TestClassOne>("ClassOne");
container.RegisterType<ITestInterface, TestClassTwo>("ClassTwo");
container.RegisterType<ClassToResolve>();
var resolvedClass = container.Resolve<ClassToResolve>();
Assert.AreEqual<int>(2, resolvedClass.Value);
}
}
[TestMethod]
public void Resolve_NamedCtorDependencyRegisteredFirst_InjectsCorrectInstance()
{
using (IUnityContainer container = new UnityContainer())
{
container.RegisterType<ITestInterface, TestClassTwo>("ClassTwo");
container.RegisterType<ITestInterface, TestClassOne>("ClassOne");
container.RegisterType<ClassToResolve>();
var resolvedClass = container.Resolve<ClassToResolve>();
Assert.AreEqual<int>(2, resolvedClass.Value);
}
}
}
을
0
대신 개체 생성자에서 팩터 리를 전달할 수 있습니다. 그렇게하면 어떤 객체가 생성되었는지 코드에서 정확히 보장 할 수 있습니다.
관련 문제
- 1. 유니티와 NHibernate
- 2. 델리게이트
- 3. 델리게이트 선언
- 4. iphone - 델리게이트
- 5. 델리게이트 객체에 여러 대의 델리게이트 추가에서 + = 기호가 무엇입니까?
- 6. 델리게이트 팩토리는 어떻게 구현합니까?
- 7. Groovy에서 MethodClosure의 델리게이트 설정
- 8. 델리게이트 객체는 어떻게 호출됩니까?
- 9. C# 델리게이트 참조 배열
- 10. 여러 메서드 전달 (델리게이트?)
- 11. 델리게이트 란 무엇입니까?
- 12. 인수가있는 델리게이트 사용
- 13. iPhone SDK의 델리게이트 정의
- 14. NSXMLParser의 델리게이트 및 메모리 누수
- 15. jQuery 델리게이트 테이블 행 선택자
- 16. iOS 키보드 델리게이트 콜백 함수
- 17. 델리게이트 채택을위한 순수 클래스 만들기
- 18. Objective-C의 델리게이트 클래스 연결하기
- 19. 특정 스레드에서 델리게이트 호출 C#
- 20. 명시 적 "this"포인터가있는 델리게이트?
- 21. Objective C 인터페이스, 델리게이트 및 프로토콜
- 22. Carbon Objective C++ 앱에서 Cocoa 델리게이트 사용
- 23. 델리게이트 형식의 메서드가 내부적으로 생성되는 방식은 무엇입니까?
- 24. 이벤트 및 리플렉션과 관련된 델리게이트 필드
- 25. 예상 클래스, 델리게이트, enum, 인터페이스 또는 구조체
- 26. 리플렉션, 제네릭, 이벤트 핸들러 및 델리게이트 문제
- 27. QDataWidgetMapper 및 QLabel과 함께 델리게이트 사용
- 28. iPhone - 델리게이트 작성 및 오버로드 메소드
- 29. .NET 델리게이트 연결에서 순서가 어떻게 중요합니까?
- 30. DOJO에 상응하는 jQuery 델리게이트 란 무엇입니까?