My.Settings 中自定义类的数组列表

2024-01-28

我有一个 Visual Basic .Net 2.0 程序。我正在将设置从较旧的设置文件移至 app.config 程序设置文件。我正在努力尽可能地做好这件事。

所以,我添加了我的设置如图所示 https://i.stack.imgur.com/eL0aa.png.

加载时我这样做:

If My.Settings.databaseConnectionSettings Is Nothing Then
            My.Settings.databaseConnectionSettings = New ArrayList()
End If

这是我的自定义类:

Imports System.Xml.Serialization

<Serializable()> Public Class DatabaseConnectionSettings
    Private _nickname As String = String.Empty
    Private _username As String = String.Empty
    Private _password As String = String.Empty
    Private _database As String = String.Empty
    Private _server As String = String.Empty
    Private _ssl As Boolean

    Public Sub New()
        _nickname = ""
        _username = ""
        _password = ""
        _database = ""
        _server = ""
        _ssl = False
    End Sub

    Public Sub New(ByVal nickname As String, ByVal username As String, _
                   ByVal password As String, ByVal database As String, _
                   ByVal server As String, ByVal ssl As Boolean)
        _nickname = nickname
        _username = username
        _password = password
        _database = database
        _server = server
        _ssl = ssl
    End Sub

    Public Property nickname() As String
        Get
            Return _nickname
        End Get
        Set(ByVal Value As String)
            _nickname = Value
        End Set
    End Property

    Public Property username() As String
        Get
            Return _username
        End Get
        Set(ByVal Value As String)
            _username = Value
        End Set
    End Property

    Public Property password() As String
        Get
            Return _password
        End Get
        Set(ByVal Value As String)
            _password = Value
        End Set
    End Property

    Public Property database() As String
        Get
            Return _database
        End Get
        Set(ByVal Value As String)
            _database = Value
        End Set
    End Property

    Public Property server() As String
        Get
            Return _server
        End Get
        Set(ByVal Value As String)
            _server = Value
        End Set
    End Property

    <XmlElementAttribute(ElementName:="ssl")> Public Property ssl() As Boolean
        Get
            Return _ssl
        End Get
        Set(ByVal Value As Boolean)
            _ssl = Value
        End Set
    End Property

End Class

而且,这就是我使用它的方式:

Dim databaseSettings As New DatabaseConnectionSettings( _
                        Me.txtNickName.Text, Me.txtUser.Text, Me.txtPass.Text, Me.txtData.Text, _
                            Me.txtServer.Text, Me.chkSSL.Checked)
                        'This statement will increment the arraylist count'
                        My.Settings.databaseConnectionSettings.Add(databaseSettings)
                        'This statement will save everything but the array list'
                        My.Settings.Save()
                        'This statement reloads everything, but the array list.  The array list count after this goes to zero.'
                        My.Settings.Reload() 'If I remove this, program works fine until next run.'

所以,问题是,如何将 DatabaseConnectionSettings 的数组列表保存到持久存储中?我想以尽可能最干净的方式做到这一点。也就是说,我不想每次使用它时都必须将其转换为字符串或将其保存到单独的文件中。我希望能够使用 My.Settings 访问器方法。

请注意,它工作正常,只是没有保存到存储中。


调试 + 异常,勾选 CLR 异常的抛出框。现在您将看到出了什么问题。有几个例外,但破坏交易的是第二个,“这种类型……不是预期的”。

需要属性来告诉 xml 序列化器 ArrayList 中存储的类型。这在本节中有描述MSDN 库页面 http://msdn.microsoft.com/en-us/library/2baksw0z%28VS.71%29.aspx,“序列化 ArrayList”部分。问题是,您无法应用所需的 [XmlElement] 属性,因为 ArrayList 实例是在自动生成的代码中声明的。泛型 List(Of T) 不存在相同的问题,但现在您会遇到设置设计器中的限制,它不支持泛型类型。

好吧,这里进退两难,你无法完成这项工作。 StringCollection 是令人讨厌的替代方案。或者放弃使用 Settings 的想法,直接使用 xml 序列化来完成。或者任何你喜欢的其他东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

My.Settings 中自定义类的数组列表 的相关文章

  • 如何查找包含nunit测试的dll文件

    我有一个包含许多 dll 的文件夹 其中之一包含 nunit 测试 标有 Test 属性的函数 我想从 C 代码运行 nunit 测试 有什么办法可以找到正确的dll吗 谢谢 您可以使用程序集加载文件 http msdn microsoft
  • 任务取消最佳实践

    假设我有一个处理器 其工作是将文件保留回磁盘 这是作为Task当观察一个BlockingCollection
  • 从平面列表创建层次结构

    我必须从平面列表构建第 n 级分层列表 我尝试使用这个答案中的解决方案 https stackoverflow com a 25532561 https stackoverflow com a 25532561但我没能得到正确的结果 这是我
  • .Net 如何获取 Web 浏览器中单击的元素的 ID

    我想获取 Web 浏览器中单击的元素的 HTML Id 例子 如果我点击 Google 搜索按钮 它应该给我所点击元素的 HTML ID 在本例中是一个按钮 我应该如何实现这一目标 编辑 Webbrowser Web 浏览器控件 如果是针对
  • 如何引用 dotNet Core 项目?

    我想将 dotNet Core 项目引用到 WPF 项目 我的 WPF 项目使用 v4 6 2 dotNet Framework 我的 dotNet Core 项目使用 v1 6 dotNet Standard 当我尝试引用它时 出现此错误
  • 根据另一个列表的内容对列表进行排序

    我有一个包含整数列表的列表和另一个包含同时包含整数和字符串的类的列表 我想做的是按字母顺序对列表进行排序 将第一个列表中存在的条目放在前面 这是我的代码和预期输出 using System using System Collections
  • 实体框架 5 不清除导航属性

    我在 Entity Framework 5 中遇到了这个奇怪的问题 我在其中一个实体中有一个导航属性 我想将其设置为null 但由于某种原因 该属性只有在我第二次调用该属性时才会被清除 using var db new Entities v
  • WCF 版本控制枚举

    我开始编写一些需要向前兼容和版本控制的 WCF 数据协定 我一直在阅读 MSDN 文章here http msdn microsoft com en us library ms733832 aspx 并且想知道是否有人对有关枚举的第 14
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • 当“多次安装 MSBuild”时,Dotnet 项目转换尝试转换失败

    try convert w Test csproj target framework netstandard2 0 结果是 Multiple installs of MSBuild detected please select one In
  • 从 VB.Net 中的 app.config 获取动态更新的连接字符串

    我在 app config 中有一个连接字符串 如下所示
  • PayPal日期时间(付款日期)解析问题

    PayPal 发送付款datetime like 09 3A37 3A22 11 月 18 2C 2012 太平洋标准时间 我尝试通过此代码转换它 但出现异常 有关如何解析它的任何线索吗 谢谢你 DateTime paymentDate D
  • 以编程方式创建类似 Visio 的图表 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要以编程方式创建类似于 Visio 的图表作为绘图 大多数情况下 我们将创建与此类似的网络布局图o
  • 为 ASP.NET MVC 实现自定义登录

    我是 ASP NET MVC 的新手 需要一些关于如何实现以下内容的建议 该站点是一个使用率很高的站点 内部 内联网 约有 200 个用户 我们使用表单身份验证来访问 SQL Server DB 不是 Windows 集成 有些操作受到保护
  • 将 ASP.NET Intranet 应用程序与 Outlook 日历集成的技术

    我不能再忽视用户的叫喊声了 他们想要一个任务调度系统 而在某些时候我必须交付 我正在考虑制作自己的系统 并不难 但是用户将拥有两个并行的任务管理系统 因为他们已经使用 Outlook 来完成相同的事情 在 Outlook 日历 任务集成方面
  • 将多对多关系与实体框架中的属性映射

    我总是使用属性将实体的属性映射到相应的列 这是一个例子 Table news entries public class News Key public int Id get set Column d date public DateTime
  • 自动加载 linq2entities 中的关系

    当我的模型中的两个实体之间存在关系时 组成员 1 用户 并尝试使用 LINQ 从该关系中选择项目 从 user GroupMember 中的实体选择实体 除非我首先使用以下语句加载关系 否则我总是得到空结果 user GroupMember
  • 我应该更喜欢 C# 中的静态方法吗

    在花了一些时间学习函数式编程之后 我越来越自然地想要使用不执行任何突变的静态方法 我有什么理由应该抑制这种本能吗 我觉得这个问题有点奇怪 因为静态方法和不执行突变的方法是方法的两个正交分类 您可以拥有可变静态方法和非可变实例方法 对我来说
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动

随机推荐

  • Paypal自适应支付php

    我有这个问题 我已经按照这个教程 gt http www youtube com watch v rzRR1i F VA http www youtube com watch v rzRR1i F VA 设置完所有内容后 我在完成身份验证过
  • 计算 VS_KEY 容器名称

    如何计算 VS KEY 容器名称 它们通常是这样的 VS KEY 71E582524B5DDE29 我假设它是基于计算机名称的 但是如果我们运行的云服务在每次实例重新启动时随机更改计算机名称会怎样 当实例启动时 我们需要知道容器名称 以便我
  • C++ 运行时获取当前操作系统

    我需要弄清楚我的程序在运行时运行的操作系统 我正在使用 Qt 4 6 2 MinGW 和 Eclipse 以及 CDT 我的程序应在 Windows 或 Linux 上运行命令行 QProcess 现在我需要一种开关来根据操作系统运行不同的
  • 在 angularjs 中调用 $window.print() 会导致打印预览显示空白页

    我有一个非常奇怪的问题 当我在 angularjs 中调用 window print 时 我看到的只是左上角的日期 顶部的页面名称 右下角的页码和左下角的网址 然而 页面上没有其他内容 这很奇怪 因为常规页面有很多内容 我想这与我在页面上的
  • 如何使同一个 JSF 复合组件包含多次以拥有自己的 javascript 范围?

    我有一个像这样的 JSF 复合组件
  • 函数 write() 与数字表示法不一致

    考虑以下脚本 list of numbers lt as numeric for i in 1001999498 1002000501 list of numbers lt c list of numbers i write list of
  • 如何将列表写入Excel列?

    我有一个 Python 中的一些值的列表 想使用 openpyxl 将它们写入 Excel 电子表格列 到目前为止我尝试过 在哪里lstStat是需要写入 Excel 列的整数列表 for statN in lstStat for line
  • 简单:获取 Android 中发送的电子邮件的确认

    启动电子邮件意图后 如何确认电子邮件已发送或调用它的活动返回错误 Intent emailIntent new Intent Intent ACTION SEND emailIntent setType png image String s
  • 尝试在Elasticsearch中设置max_gram和min_gram

    我尝试在 Ubuntu 16 04 EC2 服务器上部署 Ruby on Rails 应用程序 但给出了有关 Elasticsearch 上 max gram 和 min gram 之间差异的错误 我还没有任何 Elasticsearch
  • React:将双色滑块拇指设置为具有透明背景的图像

    我制作了一个滑块 左边应该是蓝色 右边是灰色 蓝色也应该比灰色更厚 我有两个问题 如果拇指片具有透明切口 则滑块的蓝色部分不会一直延伸到图像上可见内容的左侧 我希望滑块的边缘是圆形的 尤其是蓝色边缘 我可能不需要灰色 By round ed
  • 按下按钮时触发点击事件

    我正在创建一个将元素移动到右侧的指令 每次单击时 该项目都会移动到右侧 但我希望只要按住按钮 该元素就会移动 directive car function return restrict A link function scope elem
  • Selenium Webdriver - 获取表数据

    我想从 UI 中的表中获取数据 我知道使用 tr 和 td 循环行和列 但我的桌子是这样的 table tbody tr td data td th data th td data td td data td tr tr td data t
  • VS 2015 文件保存时 CPU 使用率较高

    使用 Visual Studio 2015 我注意到 如果我使用所有解决方案的通用项目打开多个解决方案 如果我编辑并保存属于通用项目的一个 cs 文件 则所有 Visual Studio 2015 实例将消耗 CPU 10 15秒 请注意
  • (很多)UIWebView 内存泄漏

    我从其他帖子中看到 UIWebView 存在内存泄漏问题 然而 由于我泄漏的对象数量很多 我不得不怀疑我是否做错了什么 Leaks 报告了关于打开 UIWebView 加载页面和关闭 这是 Facebook 登录页面 的大约 60 次泄漏
  • java进程中提交内存和RSS的区别

    我正在运行一个简单的 java 进程 该进程运行 jetty 其顶部显示 2 9g 的 RAM 使用的JDK版本是1 8 0 112 使用本机内存跟踪 jcmd 显示总提交内存仅为 1 5G 内存 正如 jvisualvm 所报告的 直接缓
  • 添加用户输入的数字并在用户输入“end”时中断的循环

    创建一个不需要参数的函数 该函数要求用户输入一系列大于或等于零的数字 一次一个 用户键入 end 表示不再有数字 该函数计算所有输入值的总和 我应该能够仅使用 while 循环和 if 语句来完成此操作 我遇到的主要问题是我不知道如何做到这
  • SQLite 查询根据另一个表的值获取表

    我不确定这里必须有什么标题才能正确反映我的问题 我只能描述我想要的内容 有一个包含字段的表 id name city 还有接下来的几行 1 John London 2 Mary Paris 3 John Paris 4 Samy Londo
  • 无法使用 Laravel Mix 复制文件夹

    我有一个项目使用拉拉维尔 5 4 and Laravel 混合 我有一个图像文件夹 其中一些图像具有相同的名称但类别不同 因此它们包含在不同的目录中 So resources assets images globalimage png ve
  • 由于共享库事件而停止 - Visual Studio Code

    我是 Visual Studio Code 的初学者 我尝试在其上调试我的 C 代码 我这里有一个示例代码 include iostream using namespace std int main cout lt lt hello wor
  • My.Settings 中自定义类的数组列表

    我有一个 Visual Basic Net 2 0 程序 我正在将设置从较旧的设置文件移至 app config 程序设置文件 我正在努力尽可能地做好这件事 所以 我添加了我的设置如图所示 https i stack imgur com e