假定基类Foo实现IDisposable。类FooA并FooB继承Foo类。一个简单的工厂方法,FooFactory.Create()根据客户端的需要返回FooA或FooB对象。
在下面的客户端代码(FooTest模块)中,尝试在“使用”语句中使用工厂方法会导致以下编译错误:
“使用”资源变量必须具有显式初始化。
我非常感谢有关通过Using语句支持实例化FooA或FooB(由客户端指定)的实现的任何建议(最佳实践)。不需要工厂-这只是我尝试的方法。理想情况下,我希望FooA和FooB是具有公共基类或接口的独立类。
在此先感谢您提供的任何帮助。
Public Module FooTest
Public Sub Test()
'the following compiles:
Dim f As Foo = FooFactory.Create("A")
f.DoWork()
f.Dispose()
'the following causes a compile error:
''Using' resource variable must have an explicit initialization.
Using f As FooFactory.Create("A")
f.DoWork()
End Using
End Sub
End Module
Public Module FooFactory
Public Function Create(ByVal AorB As String) As Foo
If AorB = "A" Then
Return New FooA
Else
Return New FooB
End If
End Function …Run Code Online (Sandbox Code Playgroud)