2009-09-04 8 views
1

私は、パブリックメンバとしてBaseClassオブジェクトを持つUserControlを持っています。今、私は、オブジェクトの種類を見分けるために次のことをやっている私はインスタンス化する必要があります。コンストラクタ多態性ヘルプ

両方 InvoicePurchaseOrderそのベースクラスとして継承 OrderFormFormIDは整数
Public WithEvents theForm As OrderForm 

Protected Sub Page_Load(ByVal sender As Object, _ 
    ByVal e As System.EventArgs) Handles Me.Load 

    Select Case Form 
     Case OrderItem.ItemsFor.Invoice 
      theForm = New Invoice(FormID) 
     Case OrderItem.ItemsFor.PurchaseOrder 
      theForm = New PurchaseOrder(FormID) 
    End Select 

End Sub 

。私はこれが間違っていることを知っていますが、これを行う正しい方法を知りたいと思います。

答えて

2

通常、私はロジックのコードを取り除き、単純な抽象ファクトリを作成します。抽象的なファクトリの目的は、同じ基本型のオブジェクトを作成することですが、識別器から作成する型を識別することができます。以下に、C#の簡単な例を示します。

+0

私はInterfaceを持っていません。IOrderForm ...私がBaseClassを返した場合、それでも動作しますか? – Jason

+0

はい、それはまだ動作します、私は例としてインタフェースを使用していました。 –