无法访问c#中其他类的Class?

时间:2012-08-27 12:24:39

标签: c# asp.net class web-applications

我有一个类文件JobSeekerBO它有变量

   string _username = string.Empty;
   string _password = string.Empty;

我将值设置如下

public string Username
{
    get { return _username; }
    set { _username = value; }
}

public string Password
{
    get { return _password; }
    set { _password = value; }
}

但问题是我在另一个类文件class1.cs中访问的变量我创建了该类文件的对象

JobSeekerBO objBO = new JobSeekerBO();

但我无法访问Username文件中的Password类文件中的class1.csJobSeekerBO.cs

我也尝试将该变量公开为

public string _username = string.Empty;
public string _password = string.Empty;

我们可以在file1.aspx.cs文件

中访问的同一类文件varible没有公共访问修饰符

因此,请告诉我如何将一个.cs文件的变量和方法访问另一个.cs文件。

Page Code

5 个答案:

答案 0 :(得分:6)

您无法访问课程外的_username_password,因为默认情况下他们为private。这意味着它们只能在课堂上访问。但您拥有公共属性,这些字段包含setsgets值。所以你应该使用那些公共属性。

JobSeekerBO objBO = new JobSeekerBO();
objBo.Username="someusername";
objBo.Password="myPassword";

假设你的班级看起来像这样

public class JobSeekerBO
{ 
   string _username = string.Empty;
   string _password= string.Empty;      

   public string Username
   {
        get { return _username; }
        set { _username = value; }
   }        
   public string Password
   {
        get { return _password; }
        set { _password = value; }
   }    
}
  

通常,您应该仅将字段用于具有私有的变量   或受保护的可访问性。您的类向客户端公开的数据   代码应该通过方法,属性和索引器提供。

有关msdn

中的类字段here的更多信息

编辑:查看代码后。

您正在尝试将公共属性值设置在错误的位置。你不能在那里做。你应该在一个方法中做到这一点(即使你的构造函数很好)。

public class MailRepositary
{
  JobSeekerBO objBO = new JobSeekerBO();
  public MailRepositary()
  {
      objBo.UserName="works from constructor";
  }
  public void SomeMethod()
  {
      objBo.UserName="works from method also";
  }
}

答案 1 :(得分:1)

班级 JobSeekerBO 可能不属于namespace

JobSeekerBO 类必须与您访问它的namespace相同。

如果 JobSeekerBO 在另一个或namespace之内,您必须包含包含namespace的{​​{1}}或您必须在同一JobSeekerBO

中写 JobSeekerBO

答案 2 :(得分:1)

您应该能够通过这样做来获取或设置用户名和密码。

var objBO = new JobSeekerBO();
var username = objBo.UserName;
var password = objBo.Password;

“后端”变量不需要公开,这些变量可以是私有的。

答案 3 :(得分:1)

有几种情况您将无法做到:

  1. 命名空间未正确引用
  2. 您指定的类(带属性)可以设置为internal或protected internal 如果是这样,如果这两个类具有不同的名称空间,请将其公之于众。
  3. 请验证它们。

答案 4 :(得分:0)

如果是静态类:

  1. 它们只包含静态成员。

  2. 无法实例化它们。

  3. 例如

    JobSeekerBO.UserName;   
    
    //accessing the non-public member of the class with the public property
    

    如果不是静态类,那么它应该有public类,那么它必须通过启动对象来访问。

    JobSeekerBO objBO = new JobSeekerBO();
    objBo.Username = "XXXXXXX";
    objBo.Password = "XXXXXXX";
    

    或者

    可能存在命名空间问题。就像这个类在命名空间内一样,所以要访问它,你必须引用它。

    using XYZ;