使用enum作为参数时的可访问性不一致

时间:2015-01-17 21:02:40

标签: c# parameters enums

所以我提出了一个小问题,但遇到了问题。我尝试使用枚举作为参数打开(WPF)表单,如下面的代码段中所示。

public myForm(otherClass.myEnum en)
{
    InitializeComponent();
    //my other code comes here
}

在其他类中:

class otherClass
{
    public enum myEnum
    {
        item1,
        item2
    }
}

现在,我的问题是Visual Studio给出了以下错误:

Error   1   Inconsistent accessibility: parameter type 'myProject.otherClass.myEnum' is less accessible than method 'myProject.myForm.myForm(myProject.otherClass.myEnum)'  C:\Users\MyUsername\Documents\Visual Studio 2013\Projects\MyProject\MyProject\myForm.xaml.cs    46  16  myForm

然而,枚举是公开的。我查了一下这个错误,但是其他人通常都忘记了他们的枚举,我确实让我公开了。我也不想将枚举移动到我的表单类。

感谢所有帮助!

2 个答案:

答案 0 :(得分:1)

类型的可访问性受其最外部作用域类型可访问性的限制,在我们的情况下,对于枚举它将是内部的,因为它在其他类的定义范围内,默认情况下类定义为内部。 如果您的表单被定义为public并且其中一个是公共成员,则可能会出现此问题,在我们的示例中,公共构造函数接受内部可访问性类型参数。 要解决此问题,您可以将其他类定义为public。

答案 1 :(得分:0)

enum之外的class设为public,如下所示:

public myForm(otherClass.myEnum en)
{
    InitializeComponent();
    //my other code comes here
}
namespace NameSpace
{
    public enum myEnum
    {
        item1,
        item2
    }

    class otherClass
    {

    }
}