1

VB2012: My.Settings クラスのクローン (コピーではない) を作成しようとしています。SOでここにあるDeepClone関数を試しました

Public Function DeepClone(Of T)(ByVal a As T) As T
    Using stream As New System.IO.MemoryStream
        Dim formatter As New BinaryFormatter
        formatter.Serialize(stream, a)
        stream.Position = 0
        Return DirectCast(formatter.Deserialize(stream), T)
    End Using
End Function

しかし、それは例外になります

アセンブリ 'TestApp、Version=10.1.0.3、Culture=neutral、PublicKeyToken=null' に 'MyCompany.MyDept.TestApp.My.MySettings' と入力すると、シリアル化可能としてマークされません。

設定はクラスであり、XML として保存されているため、それらを複製する方法が必要ですか、それとも間違ったツリーを鳴らしているだけですか?

〜AGP

4

2 に答える 2

0

簡単な答えは、BinaryFormatter を使用しないことです。代わりに、XmlSerializer、DataContractSerializer、または JsonSerializer を使用してください。

(一般に、Serializable属性とそれを使用するものは非推奨です。)

于 2016-06-16T21:00:02.703 に答える