【发布时间】:2021-02-12 20:25:02
【问题描述】:
我目前正在开发 VB.NET、.NET 版本 4.7.2 和 Visual Studio 2019(Windows 窗体)。如果这是天真的错误,我对 COM 语言还是很陌生。我正在尝试使用变量声明具有对象初始化程序(等效)的对象。我想用变量做它的原因是因为这些属性存储在一个文本文件中。所以我从文件中读取这些作为键/值对(字典),然后将其分配给用于初始化对象的变量。但是,如果给我以下错误
这就是我从字典中分配变量的方式。
Dim Servername = MyKeyValues.Item("servername")
Dim usr = MyKeyValues.Item("username")
Dim pwd = MyKeyValues.Item("password")
我在终端上输出值,它也以正确的大小写正确地吐出它(因为我也尝试修剪以防任何前导尾随空格)。但是当我尝试使用它来初始化对象时,我得到了底部提到的错误。
Dim objServer As New DSSDataSource
objServer.Name = Trim(Servername) ' Servername.Text
objServer.Type = EnumDSSDataSourceType.DssDataSourceTypeServer
objServer.Location = Trim(Servername) 'Servername.Text
objServer.Mode = EnumDSSConnectionMode.DssConnectionModeServerAccess
objServer.AuthMode = EnumDSSAuthModes.DssAuthStandard
objServer.login = Trim(usr) 'Login.Text
objServer.Passwd = Trim(pwd) ' Pwd.Text
objServer.Init()
但是,当我只是简单地硬编码相同的值时,对象初始化就好了。
Dim objServer As New DSSDataSource
objServer.Name = "localhost" ' Servername.Text
objServer.Type = EnumDSSDataSourceType.DssDataSourceTypeServer
objServer.Location = "localhost" 'Servername.Text
objServer.Mode = EnumDSSConnectionMode.DssConnectionModeServerAccess
objServer.AuthMode = EnumDSSAuthModes.DssAuthStandard
objServer.login = "test.usr" 'Login.Text
objServer.Passwd = "xxx" ' Pwd.Text
objServer.Init()
所以我不确定我哪里出错了。
【问题讨论】:
-
MyKeyValues.Item("servername")是否包含“localhost”? -
没有“声明对象”之类的东西。您声明一个变量,创建一个对象并将该对象分配给该变量。此外,那里没有对象初始化程序。这是一个特定的东西,你没有使用一个。一个例子是
Dim var As New SomeType With {.SomeProperty = someValue}。 -
String是String,无论它来自何处。如果您硬编码String并且它可以工作,然后您从其他地方获得String并且它不起作用,那么您从其他地方获得的String与硬编码的String不同。这是 100% 保证的。你可能认为它们是相同的,但它们不是。您需要更加努力地寻找这种差异。 -
@CaiusJard - 是的,MyKeyValues.Item("servername") 值为“localhost”
-
在
objServer.Name = Trim(Servername) ' Servername.Text上面写MessageBox.Show("same " & (MyKeyValues.Item("servername") = "localhost")- 它显示了什么?对登录名和密码执行相同操作
标签: .net vb.net class subprocess