这个VB.Net代码能被谁用来找出问题呢?
- 内容介绍
- 文章标签
- 相关推荐
本文共计437个文字,预计阅读时间需要2分钟。
我正在VB.Net中编写一些代码,希望通过各种设计模式向同事展示(不要再熟视无睹了)——+ 而且我遇到了Factory Method模式的问题。这是我的代码:
vbNamespace Patterns.Creational.FactoryMethod ' 'summar'
我正在VB.Net中编写一些代码,我希望通过各种设计模式向同事们展示(不要再熟悉一下) – 而且我遇到了FactoryMethod模式的问题.这是我的代码:
Namespace Patterns.Creational.FactoryMethod ''' <summary> ''' This is the Factory bit - the other classes are merely by way of an example... ''' </summary> Public Class CarFactory ''' <summary> ''' CreateCar could have been declared as Shared (in other words,a Class method) - it doesn't really matter. ''' Don't worry too much about the contents of the CreateCar method - the point is that it decides which type ''' of car should be created, and then returns a new instance of that specific subclass of Car. ''' </summary> Public Function CreateCar() As Car Dim blnMondeoCondition As Boolean = False Dim blnFocusCondition As Boolean = False Dim blnFiestaCondition As Boolean = False If blnMondeoCondition Then Return New Mondeo() ElseIf blnFocusCondition Then Return New Focus() ElseIf blnFiestaCondition Then Return New Fiesta() Else Throw New ApplicationException("Unable to create a car...") End If End Function End Class Public MustInherit Class Car Public MustOverride ReadOnly Property Price() As Decimal End Class Public Class Mondeo Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 17000 End Get End Property End Class Public Class Focus Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 14000 End Get End Property End Class Public Class Fiesta Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 12000 End Get End Property End Class End Namespace
当我尝试编译它时,我在CarFactory.CreateCar中收到错误(BC30311),告诉我它无法将Fiesta,Mondeo和Focus转换为Car.我不知道问题是什么 – 它们都是Car的子类.
毫无疑问,我忽视了一些简单的事情.谁能发现它?
干杯,
马丁.
您的Inherits关键字必须在新行上. Microsoft在其帮助和支持中记录了这一点. support.microsoft.com/kb/307222Change the SavingsAccount class definition as follows, so that SavingsAccount inherits from Account (note that the Inherits keyword must appear on a new line):
本文共计437个文字,预计阅读时间需要2分钟。
我正在VB.Net中编写一些代码,希望通过各种设计模式向同事展示(不要再熟视无睹了)——+ 而且我遇到了Factory Method模式的问题。这是我的代码:
vbNamespace Patterns.Creational.FactoryMethod ' 'summar'
我正在VB.Net中编写一些代码,我希望通过各种设计模式向同事们展示(不要再熟悉一下) – 而且我遇到了FactoryMethod模式的问题.这是我的代码:
Namespace Patterns.Creational.FactoryMethod ''' <summary> ''' This is the Factory bit - the other classes are merely by way of an example... ''' </summary> Public Class CarFactory ''' <summary> ''' CreateCar could have been declared as Shared (in other words,a Class method) - it doesn't really matter. ''' Don't worry too much about the contents of the CreateCar method - the point is that it decides which type ''' of car should be created, and then returns a new instance of that specific subclass of Car. ''' </summary> Public Function CreateCar() As Car Dim blnMondeoCondition As Boolean = False Dim blnFocusCondition As Boolean = False Dim blnFiestaCondition As Boolean = False If blnMondeoCondition Then Return New Mondeo() ElseIf blnFocusCondition Then Return New Focus() ElseIf blnFiestaCondition Then Return New Fiesta() Else Throw New ApplicationException("Unable to create a car...") End If End Function End Class Public MustInherit Class Car Public MustOverride ReadOnly Property Price() As Decimal End Class Public Class Mondeo Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 17000 End Get End Property End Class Public Class Focus Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 14000 End Get End Property End Class Public Class Fiesta Inherits Car Public ReadOnly Overrides Property Price() As Decimal Get Return 12000 End Get End Property End Class End Namespace
当我尝试编译它时,我在CarFactory.CreateCar中收到错误(BC30311),告诉我它无法将Fiesta,Mondeo和Focus转换为Car.我不知道问题是什么 – 它们都是Car的子类.
毫无疑问,我忽视了一些简单的事情.谁能发现它?
干杯,
马丁.
您的Inherits关键字必须在新行上. Microsoft在其帮助和支持中记录了这一点. support.microsoft.com/kb/307222Change the SavingsAccount class definition as follows, so that SavingsAccount inherits from Account (note that the Inherits keyword must appear on a new line):

