公共结构不属于同类之外

时间:2012-06-02 13:45:21

标签: c# asp.net visual-studio-2008

祝大家好。 1)我在类文件(Films.cs)中定义了一个公共结构,如下所示:

public struct CategoryDetails
        {
            ...
        }

对于所有重要的事情,不要将类放入命名空间。

2)我有一个名为Catalog的aspx文件,带有代码隐藏文件。 在代码隐藏文件中,我有这个(与Page_Load方法处于同一级别):

private void PopulateControls()
        {
            --> here I would like to have visibility to the CategoryDetails structure, which I don't
        }

我指定Catalog.ascx.cs(代码隐藏)文件具有命名空间。

  • 甲。到目前为止我尝试的是将Films类放在同一个类中 命名空间。没运气。
  • B中。如您所见,结构是公开的。谢谢您的帮助。 非常感谢。

2 个答案:

答案 0 :(得分:3)

请尝试使用Films.CategoryDetails。嵌套类/结构在访问时需要使其包装类具有前缀(如命名空间)。 (除非您从该包装类中访问它)

private void PopulateControls()
{
    var categorydetails = new Films.CategoryDetails();
    //do stuff
}

编辑: 只是为了澄清一下,在Films类中,您不再需要为它添加前缀。 (如果存在模糊的命名问题,你仍然可以加上前缀):

namespace MyProject
{
    public class Films
    {
        public struct CategoryDetails
        {
        }


        public void DoStuff()
        {
            //both are valid
            var categorydetails = new CategoryDetails();
            var otherdetails = new Films.CategoryDetails();
        }

    }
}

答案 1 :(得分:1)

您是在类Films内部还是在类文件films.cs中实现struct(在全局范围内)。尝试像这样导航你的结构

var categorydetails = new global::CategoryDetails();