我是 ASP.net/VB.net 中创建网络服务的新手。我在 App_Code 文件夹中的 Service.vb 中设置了一个公共变量:
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Diagnostics
Imports System.Web.Script.Services
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
Inherits System.Web.Services.WebService
Public avIP As String = "0.0.0.0"
etc etc....
现在我已经制作了另一个 Class ,我希望得到 avIP 的值。但是,当我这样做时:
Client.Connect(Service.avIP, 60128)
它不会给我这个值只是一个错误。如果我做服务,我似乎没有任何价值。。建议清单中没有任何内容。
如何从 Service.vb 中获取值到我的其他课程中?
更新
我在 Service.vb 文件中有以下内容:
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Service
Inherits System.Web.Services.WebService
Public svc As Service = New Service
Dim avIp As String = "0.0.0.0"
在 avReceiver.vb 中我有:
Client.Connect(svc.avIP, 60128)
答案 0 :(得分:1)
要引用像您这样的类中声明的公共变量,您需要创建该类的实例 这意味着每个创建的类的实例都有它的变量副本 它是每种面向对象语言的一个非常基本的功能。
' Create a new instance of the Service class
Dim svc As Service = new Service()
' Set the value of a Public Property
svc.avIP = "192.168.1.0"
' Use the instance value of that property
Client.Connect(svc.avIP, 60129)
' Create another instance of the Service class
Dim svc1 As Service = new Service()
' Set the value of a Public Property
svc1.avIP = "192.168.1.1"
' Use the instance value of that property
Client.Connect(svc1.avIP, 60129)
如果要在不声明该类的实例的情况下使用类的属性成员,则需要将该成员声明为Shared
(C#中的静态)。
这意味着该类的每个实例将共享相同的变量(当然还有它的值)。
Public Class Service
Inherits System.Web.Services.WebService
Public Shared avIP As String = "0.0.0.0"
....
End Class
' Set the one and only avIP for every instance
Service.avIP = "192.168.1.0"
' Use directly the value
Client.Connect(Service.avIP, 60129)
' Create an instance of the Service class
Dim svc As Service = new Service()
' Pass the same value used directly with the class name (192.168.1.0)
Client.Connect(svc.avIP, 60129)