gpt4 book ai didi

asp.net - 为什么我的类(class)什么都没有?

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

我有一个 .NET 2010 项目。在其中,我创建了一个基本用户类。实例化它并成功地用数据填充它。在它执行此操作的整个过程中,如果我将鼠标悬停在该类上,它会说它什么都没有,即使它填充了它的属性。后来,它在 UI 中显示了我,尽管该属性有一个值,但它表示该类什么都不是。

我确实创建了该类...

将 oExtendedUser 调暗为新的 ExtendedUser

这是类定义...

Public Class ExtendedUser
Inherits System.Web.Security.MembershipUser

Public Sub New()
_Role = New Role

End Sub

Public Property ExtendedUserID As Int32
Public Property FirstName As String
Public Property LastName As String
Public Property Phone As String
Public Property UserID As Guid
Public Property Role As Role
Public Property UserName() As String
Public Property Password() As String
Public Property SecurityQuestion() As String
Public Property SecurityAnswer() As String
End Class

我换了类(class)。我添加了 MyBase.New() 但问题仍然存在。在 UI 上,以下是单击按钮时执行的代码。作为属性(property),Director 拥有 ExtendedUser

Dim oCase As New BE.Case
Dim oDirector As New BE.Director
oDirector = SessionManager.Director 'the values are here
oCase.Investigator.ExtendedUserID = oDirector.ExtendedUser.ExtendedUserID

这是导演......

Public Class Director

Public Sub New()
_ExtendedUser = New ExtendedUser

End Sub

Public Property ID As Int32
Public Property ExtendedUser As ExtendedUser

End Class

最佳答案

您被 ToString 覆盖欺骗了。您的对象存在,但它覆盖了 ToString 方法:MembershipUser.ToString

要验证此行为,请使用一个简单的类进行尝试:

VB.NET

Public Class Test
Public Property TestString As String

Public Overrides Function ToString() As String
Return Me.TestString
End Function

End Class

C#

public class Test
{
public string TestString { get; set; }

public override string ToString()
{
return this.TestString;
}
}

使用此代码, watch 将向您显示一个实例化的“无”测试,因为 ToString 值将为“无”。该对象存在,但 Visual Studio 正在使用 ToString 方法填充值字段,此时它为 Nothing。

VB.NET

Public Class Test
Public Property TestString As String = ""

Public Overrides Function ToString() As String
Return Me.TestString
End Function

End Class

C#

public class Test
{
public Test()
{
this.TestString = "";
}

public string TestString { get; set; }

public override string ToString()
{
return this.TestString;
}

}

使用此代码,您将得到一个空字符串。

要回到您的代码,您不能如此简单地扩展 MembershipUser,您必须遵循以下准则:How to: Implement a Custom Membership User 。因为很多事情都不适用于您的实际扩展(例如,您的用户名隐藏了基本扩展)。

参见this question以及。有比继承更简单的方法来扩展用户“实体”。

关于asp.net - 为什么我的类(class)什么都没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861097/

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