0

我是在ASP.net/VB.net中创建 Web 服务的新手。我在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....

现在我已经创建了另一个,我想获得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)
4

1 回答 1

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)
于 2012-10-06T21:48:10.340 回答