我正在使用抽象工廠模式來實例化對象。我只向客戶端分配了一個類(公共類)來實例化一個對象,並且該對象有實例化其他對象(Friend類僅用於該程序集)的方法。Castle Windsor - 如何解決使用抽象工廠模式創建的接口
現在我想實現Castle-Windsor來解析我的接口。我的所有對象創建邏輯到一個接口坐在我的公共類。
如何使用具有相同返回類型接口的方法的對象來解析我的接口。
BE界面 - >
Public Interface IDependency1
Property DoSomething As String
End Interface
Public Interface IDependency2
Property DoSomething2 As String
End Interface
Public Interface IDependencyAll
Readonly Property Dependency1() As IDependency1
Function Dependency2() As IDependency2
End Interface
BL Implementaions - >
Friend Class Dependency1
Implements IDependency1
Private newPropertyValue As String = "Test"
Public Property DoSomething() As String Implements IDependency1.DoSomething
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property
End Class
Friend Class Dependency2
Inherits rbASE
Implements IDependency2
Private newPropertyValue As String = "Test"
Public Property DoSomething2() As String Implements IDependency2.DoSomething2
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property
End Class
Public Class Main
Implements IDependencyAll
Public Readonly Property Dependency1() As IDependency1 Implements IDependencyAll.Dependency1
Get
Return New Dependency1
End Get
End Property
Public Function Dependency2() As IDependency2 Implements IDependencyAll.Dependency2
Return New Dependency2()
End Function
End Class
客戶端 - >
Dim container = New WindsorContainer()
'container.Register(Castle.MicroKernel.Registration.Component.For(Of BE.Main1)())
'container.Register(Castle.MicroKernel.Registration.Component.For(Of BE.IDependency1)().ImplementedBy(Of BE.Dependency12)())
'container.Register(Castle.MicroKernel.Registration.Component.For(Of BE.IDependency2)().ImplementedBy(Of BE.Dependency22)())
'Dim mainThing = container.Resolve(Of BE.Main1)()
'mainThing.DoSomething()
Dim container1 = New WindsorContainer()
' container1.Register(Classes.FromAssemblyNamed("BE").Pick.WithService.DefaultInterfaces.LifestyleTransient)
container1.Register(Classes.FromAssemblyNamed("BL").BasedOn(GetType(IDependencyAll)).WithService.Base.LifestyleTransient)
'container1.Register(Classes.FromAssemblyNamed("BL").BasedOn(GetType(IDependency1)).WithService.Base.LifestyleTransient)
' container1.Register(Castle.MicroKernel.Registration.Component.For(Of BE.IDependencyAll)().ImplementedBy(Of BL.Main)())
Dim answer As String = "not resolved properluy"
Dim IcaseController As IDependencyAll = container1.Resolve(GetType(IDependencyAll))
Dim p = IcaseController.CreateBI(Of IDependency1)()
answer = p.DoSomething
'Dim p = IcaseController.
Label1.Text = answer
它有2個類庫項目和1個UI項目。
我將與Prope嘗試與溫莎城堡共同噴射。 – Ramesh