首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >克隆My.Settings

克隆My.Settings
EN

Stack Overflow用户
提问于 2016-06-16 20:52:42
回答 2查看 138关注 0票数 1

VB2012:我正在尝试复制My.Settings类(而不是副本)。我尝试了在这里找到的DeepClone函数

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2016-06-16 21:00:02

简单的答案是不要使用BinaryFormatter。改用XmlSerializer、DataContractSerializer或JsonSerializer。

(一般来说,Serializable属性和使用它的东西是不推荐的。)

票数 0
EN

Stack Overflow用户

发布于 2017-01-25 13:38:44

还不清楚为什么需要设置的“副本”。因为My.SettingsShared属性,所以它包含的设置是全局可访问的。但是,由于它在第一次读取设置属性时从配置文件加载所有设置,如果确实需要内存中的第二个副本,则只需创建MySettings类的一个新实例,并让它再次从文件中填充自己。例如,如果您有一个名为StringClientName设置,您可以这样做:

代码语言:javascript
复制
Dim copy As New My.MySettings()
Dim clientName As String = copy.ClientName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37869156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档