私も工場の親クラスを持っています。たとえば、次のように継承されたクラスでクラスの戻り値の型を持つ関数を持つことはできますか? VB.NET
Public Class Factory
Public Function clone() as Factory
' Some logic here
' return something
End Function
Public Function all() as List (Of Factory)
' Some logic here
' return something
End Function
End Class
そして私は、継承された1によって呼び出されたときに適切な拡張されたオブジェクトを生成するファクトリクラスに抑揚を使用することができます継承された1
Public Class BookFactory
inherits Factory
End Class
。 myBookFactory.clone()
はBookFactory
インスタンスを返すだけでなく、Factory
インスタンスを返します。
問題:BookFactory
のインスタンスは、Factory
であり、BookFactory
ではないため、Factory
としてキャストされます。
私はそう返された値が正しくキャストし、これを毎回行うことを避けることになる
Public Class Factory
Public Function clone() as Me.GetType()
' Some logic here
' return something
End Function
Public Function all() as List (Of Me.GetType())
' Some logic here
' return something
End Function
End Class
ような何かをしたいと思います:
Dim myBookFactory2 = DirectCast(myBookFactory1.clone(), myBookFactory1.getType())
私はこれをどのように行うことができますか?
ここでは、工場のパターンを真剣に殺しています。しかし、消費者が派生したタイプを気にしている場合は、キャストが必要です。それはいけません。フレームワーク内のXmlWriter.Create()と比較してください。 –