LightInject를 잠시 사용 해왔다. 같은 유형의 여러 생성자를 지원하려고하는 걸림돌을 치십시오. 아래의 단순화 된 예를 참조하십시오. Foo는 인수의 유형 및 수에 따라 4 개의 생성자를가집니다. 생성자마다 하나의 매핑을 등록합니다. IFoo를 검색하기 위해 GetInstance를 처음 호출하면 다음 예외가 발생하여 불어납니다. 내가 뭘 놓치고 있니? 이 기능을 어떻게 수행 할 수 있습니까?LightInject multiple constructors
InvalidCastException : 'LightInject.ServiceContainer'형식의 개체를 'System.Object []'형식으로 캐스팅 할 수 없습니다.
Public Interface IFoo
End Interface
Public Class Foo
Implements IFoo
Public Sub New()
End Sub
Public Sub New(name As String)
End Sub
Public Sub New(age As Integer)
End Sub
Public Sub New(name As String, age As Integer)
End Sub
End Class
container.Register(Of IFoo, Foo)
container.Register(Of String, IFoo)(Function(factory, name) New Foo(name))
container.Register(Of Integer, IFoo)(Function(factory, age) New Foo(age))
container.Register(Of String, Integer, IFoo)(Function(factory, name, age) New Foo(name, age))
Dim f1 As IFoo = container.GetInstance(Of IFoo)() 'BOOM!
Dim f2 As IFoo = container.GetInstance(Of String, IFoo)("Scott")
Dim f3 As IFoo = container.GetInstance(Of Integer, IFoo)(25)
Dim f4 As IFoo = container.GetInstance(Of String, Integer, IFoo)("Scott", 25)
당신의'Foo' 클래스는 DI 컨테이너에 의해 해결되어야하는 구성 요소처럼 보이지 않습니다; 대신 엔티티 또는 DTO처럼 보입니다. 그것들과 같은 객체는 DI 컨테이너에 의해 해석되어서는 안됩니다. 왜냐하면 그것은 모호함을 야기 할 뿐이 기 때문입니다. – Steven