类属性不可访问

时间:2016-03-03 11:05:06

标签: c#

我目前有一个类首先看起来像这样:

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无法访问,或者是否有人可以帮我找到获取NameBusinessIDAddress的解决方案?

编辑:我想在aspx.cs文件中获取课外的属性。

提前致谢。

6 个答案:

答案 0 :(得分:3)

如果我正确理解了您的用例,下面的内容是一种方法。

您可以通过以下方式为第二个类创建实例:

Controller.Configuration ac = new Controller.Configuration();

答案 1 :(得分:3)

类只是实际实例的蓝图。你的代码定义了两个类,但是封闭的一个(Controller)没有一个属性来访问所包含的内部类(Configuration)

如果要设置/获取属于Controller类实例的Configuration类实例的属性,则应在Controller类的Configuration类中声明成员属性

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";

答案 2 :(得分:2)

试试这个:

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();

答案 3 :(得分:1)

我认为你的目标是这个设置:

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())中实例化。

答案 4 :(得分:1)

您已定义了一个类(Controller)和一个内部类(Controller.Configuration)

因此,您定义的属性是Controller.Configuration类的域,而不是控制器的域。

所以你应该:

@RenderSection("head", required: false)

另外,你可以在Controller中创建一个Configuration类型的属性,你可以使用它..

// istantiate a controller.configuration instance
Controller.Configuration p = new Controller.Configuration();
// and use his properties
p.Name = "test";

答案 5 :(得分:0)

要使它工作有两种可能性(从你想要的问题中不清楚)

1。 Insantiate

您需要Configuration类的实例,并在构造函数

中初始化它
public Configuration Configuration_Instance {get;set;}

public Controller() {
  Configuration_Instance = new Configuration();
}

并使用

ctrl.Configuration_Instance.Name //etc.

2。使用静态

make Configuration static

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.