ユーザーがコンストラクターに型情報を提供する必要がないように、XMLSerializer を私の「ファサード」クラスの背後に配置したいと考えています。しかし、これを行うには問題があります。このクラスを考えてみましょう:
Class XmlFormatter
Private Shared xs As XmlSerializer
Public Function Deserialize(ByVal serializationStream As Stream) As Object
Dim o As Object = Nothing
If Not xs Is Nothing Then
o = xs.Deserialize(serializationStream)
End If
Return o
End Function
Public Overloads Sub Serialize(ByVal serializationStream As Stream, ByVal graph As Object)
If xs Is Nothing Then
xs = New XmlSerializer(graph.GetType())
End If
xs.Serialize(serializationStream, graph)
End Sub
End Class
問題は、このクラスのユーザーは、Serialize で XMLSerializer インスタンスが作成され、共有されるため、最初に Serialize を使用しないと Deserialize を使用できないことです。ただし、このインスタンスなしで Deserialize を使用すると、単純に Nothing が返されます。この問題は解決できますか?