C# ASP.Net-访问非静态类的静态方法时出错

C# ASP.Net-访问非静态类的静态方法时出错,c#,asp.net,C#,Asp.net,我正在使用Microsoft Visual Web Developer和基于C的ASP.Net作为学校项目开发一个网站 我实现了一个简单的类来表示数据库中形成的用户。班级 具有表示数据库中的列的成员,以及用于从DataTable结果创建实例的两个静态方法。以下代码用于MyDbase,这是我们获得的一些帮助类: //User.cs,放置在 使用制度; 公共类用户 { 私有int-id; 私人字符串电子邮件; 私有字符串名; 私有字符串lastName; 私有字符串用户名; 私有字符串passwd;

我正在使用Microsoft Visual Web Developer和基于C的ASP.Net作为学校项目开发一个网站

我实现了一个简单的类来表示数据库中形成的用户。班级 具有表示数据库中的列的成员,以及用于从DataTable结果创建实例的两个静态方法。以下代码用于MyDbase,这是我们获得的一些帮助类:

//User.cs,放置在 使用制度; 公共类用户 { 私有int-id; 私人字符串电子邮件; 私有字符串名; 私有字符串lastName; 私有字符串用户名; 私有字符串passwd; 私人字符串生日; 私人布尔伊斯梅尔; 私人电话; 私有字符串; 二等兵布尔·伊萨明; …//访问器和变异器 公共用户int\u id、String\u email、String\u firstName、String\u lastName、String\u username、String\u passwd、, 串生日,布尔伊斯梅尔,串电话,串头像,布尔伊斯曼 { this.id=\u id; this.email=\u email; this.firstName=\u firstName; this.lastName=\u lastName; this.username=\u username; this.passwd=\u passwd; this.birthDate=\u birthDate; this.isMale=\u isMale; this.phone=\u phone; this.avatarUrl=_avatarUrl; this.isAdmin=\u isAdmin; } 公共静态用户getUserForSqlResultSystem.Data.DataTable结果 { 用户newUser=null; 如果result.Rows.Count==1 { newUser=newuserintresult.Rows[0][id],Stringresult.Rows[0][email], Stringresult.Rows[0][firstName],Stringresult.Rows[0][lastName],Stringresult.Rows[0][username], Stringresult.Rows[0][passwd],Stringresult.Rows[0][birthDate],boolresult.Rows[0][isMale], Stringresult.Rows[0][phone],Stringresult.Rows[0][avatarUrl],boolresult.Rows[0][isAdmin]; } 返回新用户; } 公共静态用户getUserById { System.Data.DataTable dt=MyDbase.SelectFromTableselect*from tUsers,其中id=+id,db.mdb; 返回getUserForSqlResultdt; } 公共void saveUserChanges { MyDbase.ChangeTableUPDATE tUsers设置email='+this.email+',firstName='+this.firstName+',lastName='+this.lastName+ “,passwd=”+this.passwd+”,birthDate=“+this.birthDate+”,phone=“+this.phone+”,avatarUrl=”+ this.avatarUrl+'其中id=+this.id,db.mdb; } } 我尝试运行以下示例代码,以确保选择和更新函数在Default.aspx中正常工作:

但是,我得到以下错误:

错误1“System.Security.Principal.IPrincipal”不包含 “getUserById”和无扩展方法“getUserById”的定义 接受类型为的第一个参数 可以找到“System.Security.Principal.IPrincipal”你失踪了吗 使用指令还是程序集引用

你知道为什么会这样吗? Tnx

问题在于页面有一个名为User的属性。当涉及evalute User.getUserById时,它是在推断,而不是您的用户类。请改用完整类型命名空间:

protected void Page_Load(object sender, EventArgs e)
{

    My.Namespace.User user = My.Namespace.User.getUserById(3);
    user.setEmail("different@email.com");
    user.saveUserChanges();
}
如果您的类没有名称空间,请添加一个名称空间。但是,大多数项目都支持默认名称空间。您可以通过查看项目属性来了解这是什么。

问题在于页面有一个名为User的属性。当涉及evalute User.getUserById时,它是在推断,而不是您的用户类。请改用完整类型命名空间:

protected void Page_Load(object sender, EventArgs e)
{

    My.Namespace.User user = My.Namespace.User.getUserById(3);
    user.setEmail("different@email.com");
    user.saveUserChanges();
}

如果您的类没有名称空间,请添加一个名称空间。但是,大多数项目都支持默认名称空间。您可以通过查看项目属性来了解这是什么。

您将用户类与页面属性混为一谈。

您将用户类与页面属性混为一谈。

向用户类添加名称空间,以消除page.User属性与用户类之间的歧义

using System;

namespace MyUser
{
    public class User
    {
       ....
    }
}
然后在页面中加载

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

        MyUser.User user = MyUser.User.getUserById(3);
        user.setEmail("different@email.com");
        user.saveUserChanges();
    }
}

向用户类添加命名空间,以消除Page.User属性和用户类之间的歧义

using System;

namespace MyUser
{
    public class User
    {
       ....
    }
}
然后在页面中加载

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

        MyUser.User user = MyUser.User.getUserById(3);
        user.setEmail("different@email.com");
        user.saveUserChanges();
    }
}