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
但会导致异常
输入' MyCompany.MyDept.TestApp.My.MySettings'在大会 ' TestApp,Version = 10.1.0.3,Culture = neutral,PublicKeyToken = null'是 没有标记为可序列化。
设置是一个类并保存为XML,必须有一种克隆它们的方法,或者我只是咆哮错误的树?
〜AGP
答案 0 :(得分:0)
简单的答案是不使用BinaryFormatter。改为使用XmlSerializer,DataContractSerializer或JsonSerializer。
(通常,不推荐使用Serializable
属性和使用它的内容。)
答案 1 :(得分:0)
不清楚为什么你需要一个"副本"的设置。由于My.Settings
是Shared
属性,因此它包含的设置是全局可访问的。但是,因为它在第一次读取设置属性时从配置文件加载其所有设置,如果你真的需要在内存中使用第二个副本,你可以创建一个MySettings
类的新实例并让它再次从文件填充自己。例如,如果您有一个名为String
的{{1}}设置,则可以执行以下操作:
ClientName