gpt4 book ai didi

asp.net - VB.NET Web 服务 - 从继承类返回只读属性

转载 作者:行者123 更新时间:2023-12-02 17:40:22 25 4
gpt4 key购买 nike

我想我错过了一些非常基本的东西,但这就是我的困境。在 VB.net 中,我创建了一个继承 MembershipUser 并从 Web 服务返回对象的类:

Public Class ModifiedUser
Inherits MembershipUser

用户登录:

Private Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
Dim ws As New MembersWS.Members
Dim Member As New MembersWS.ModifiedUser
ws.Credentials = System.Net.CredentialCache.DefaultCredentials()
Member = ws.ValidateUser(Login1.UserName, Login1.Password)
End Sub

在 Web 服务中创建对象时,ModifiedUser 包含 MembershipUser 的所有属性以及新类的属性。

在我的示例中,ValidateUser 函数验证用户并添加其他属性:

Public Function ValidateUser(ByVal UserName As String, ByVal Password As String) As ModifiedUser
Dim BaseUser As MembershipUser = Membership.Provider.GetUser(UserName, False)
Dim Member As New ModifiedUser
If Membership.Provider.ValidateUser(UserName, Password) = True Then
Member = New ModifiedUser(BaseUser.ProviderName, BaseUser.UserName, BaseUser.ProviderUserKey, BaseUser.Email, BaseUser.PasswordQuestion, BaseUser.Comment, BaseUser.IsApproved, BaseUser.IsLockedOut, BaseUser.CreationDate, BaseUser.LastLoginDate, BaseUser.LastActivityDate, BaseUser.LastPasswordChangedDate, BaseUser.LastLockoutDate, 0, "", "", "", "", True)
' ... (Set new property values)
End if
Return Member
End Function

Member 返回到 Login1_Authenticate 时,只读属性将从对象中删除,同时它们包含在从 Web 服务返回的对象中。

在 Web 服务的 reference.vb 文件中,自动生成的代码包含部分 MembershipUser 类,其中仅包含可更新的属性以及关联的 getter 和 setter:

Partial Public Class MembershipUser
Private emailField As String
Private commentField As String
Private isApprovedField As Boolean
Private lastLoginDateField As Date
Private lastActivityDateField As Date

如果有人能让我知道如何在返回的对象中包含只读属性,我将非常感激。

最佳答案

当 Web 服务返回包含只读属性的对象时,只读属性始终会被忽略。这是因为在客户端,无法通过设置只读属性的值来反序列化数据。解决此问题的一种方法是向您的属性添加一个 setter ,该 setter 不执行任何操作或引发异常。例如:

Public Property Id() As Integer
Get
Return nID
End Get
Set(ByVal Value As Integer)
Throw New Exception("Cannot set read-only property 'Id'")
End Set
End Property

请参阅此问题以获取更多想法:

Is it possible to create read only elements in SOAP web services?

关于asp.net - VB.NET Web 服务 - 从继承类返回只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com