我正在使用抽象工厂模式来实例化对象。我只向客户端分配了一个类(公共类)来实例化一个对象,并且该对象有实例化其他对象(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