无法将受保护的枚举作为静态方法的参数传递

Can't pass protected enum as parameter for static method

我一直在更新公司的软件,偶然发现了这个问题。有一个受保护的枚举,我想从该枚举中传递一个值作为静态方法的参数,但我不能因为我无法访问它,即使方法和枚举都在同一个 class.

示例:

Class SomeClass
{    
    protected enum Car
    {
        Id
    };

    public static void AMethod(Car enumValue)
    {
        MessageBox.Show("This is an enum:" + enumValue.ToString());
    }  
}

我无法将此 Car enumValue 用作 AMethod 的参数,因为我无权访问它。 为什么我不能这样做?我的意思是他们在同一个class。我错过了什么吗?

问题不在于您的 SomeClass 看不到枚举。问题是你的枚举有一个 protected 访问修饰符,你试图在 public 方法中使用它(即可访问 outside 你的 class).您不能通过 public 成员公开 protected 类型,因为其他 classes 中的方法在尝试调用 AMMethod() 时看不到枚举。

根据您打算如何使用它 class,您需要更改其中一个以使访问修饰符匹配:

public enum Car
{
    Id
};

public static void AMethod(Car enumValue)
{
    MessageBox.Show("This is an enum:" + enumValue.ToString());
}  

或:

protected enum Car
{
    Id
};

protected static void AMethod(Car enumValue)
{
    MessageBox.Show("This is an enum:" + enumValue.ToString());
}  

后一个只会防止编译器错误,但可能是您想要 AMethod public的情况,所以您应该选择前者。