类属性不可访问
本文关键字:访问 属性 | 更新日期: 2023-09-27 18:37:08
我目前有一个类,首先看起来像这样:
public class Controller
{
public class Configuration
{
// Properties of the Database
public string Name { get; set; }
public string BusinessID { get; set; }
public string Address { get; set; }
}
然后,我有几个函数实际将数据绑定到属性 - 工作正常。但是,我似乎找不到有关访问类属性的任何文档。我试过:
Controller ctrl;
ctrl = new Controller();
但是,ctrl
不保存任何这些值/属性;也不保存 Configuration
类。
这种结构是否有问题,这就是为什么无法访问Configuration
,或者任何人都可以帮助我找到获得Name
、BusinessID
和Address
的解决方案?
编辑:我想在aspx.cs
文件中获取类外的属性。
提前谢谢。
类只是实际实例的蓝图。您的代码定义了两个类,但封闭的类(控制器)没有访问封闭的内部类的属性(配置)
如果要设置/获取属于控制器类实例的配置类实例的属性,则应在"配置"类型的控制器类中声明成员属性
public class Controller
{
public class Configuration
{
// Properties of the Database
public string Name { get; set; }
public string BusinessID { get; set; }
public string Address { get; set; }
}
// If you don't want external code set the internal instance remove the set method
public Configuration ctrlConfig {get;set;}
public Controller()
{
// Remember to initialize the inner instance of the configuration
ctrlConfig = new Configuration()
}
}
现在在其他地方
Controller ctrl;
ctrl = new Controller();
ctrl.ctrlConfig.Name = "YourConfigName";
如果我正确理解了您的用例,那么下面是一种方法。
您可以通过以下方式为第二个类创建实例:
Controller.Configuration ac = new Controller.Configuration();
试试这个:
public class Controller
{
Configuration c;
public class Configuration
{
// Properties of the Database
public string Name { get; set; }
public string BusinessID { get; set; }
public string Address { get; set; }
}
}
然后,您将能够访问这些值:
Controller ctrl = new Controller();
ctrl.c = new Configuration();
我认为您的目标是此设置:
public class Controller
{
public Controller()
{
this.Config = new Configuration();
}
public Configuration Config { get; set; }
}
public class Configuration
{
public string Name { get; set; }
public string BusinessID { get; set; }
public string Address { get; set; }
}
然后你可以这样做:
Controller ctrl;
ctrl = new Controller();
Console.WriteLine(ctrl.Configuration.Name);
在原始代码中,在另一个类中定义了一个类。在我的示例中,Controller
有一个类型 Configuration
的属性,该属性在构造函数 (public Controller()
) 中实例化。
您已经定义了一个类(控制器)和一个内部类(控制器.配置)
因此,您定义的属性是类 Controller.Configuration 的域,而不是控制器的域。
所以你应该:
// istantiate a controller.configuration instance
Controller.Configuration p = new Controller.Configuration();
// and use his properties
p.Name = "test";
或者,您可以在控制器中创建配置类型的属性,您可以使用它。
public class Controller
{
public Controller()
{
Config = new Configuration();
}
public class Configuration
{
// Properties of the Database
public string Name { get; set; }
public string BusinessID { get; set; }
public string Address { get; set; }
}
public Configuration Config { get; set; }
}
// istantiate a controller.configuration instance
Controller cont = new Controller();
// and use his properties
cont.Config.Name = "test";
要让它工作,有两种可能性(从您期望的问题中不清楚)
1. 无罪
您需要 Configuration
类的实例,并在构造函数中对其进行初始化
public Configuration Configuration_Instance {get;set;}
public Controller() {
Configuration_Instance = new Configuration();
}
和使用
ctrl.Configuration_Instance.Name //etc.
2. 使用静态
使Configuration
静态
public static class Configuration {
public static string Name { get; set; }
public static string BusinessID { get; set; }
public static string Address { get; set; }
}
和使用
ctrl.Configuration.Name //etc.