为什么在C#中的不同文件中找不到枚举?

为什么在C#中的不同文件中找不到枚举?,c#,C#,我有一个C#文件a,它定义了一些公共枚举和公共结构。现在我需要为它们定义错误代码。我在文件B中定义了一个名为SubsystemErrorCode的枚举。A和B中都没有类。它们位于文件A的一个结构中的同一命名空间中,我尝试使用SubsystemErrorCode枚举,但它给了我错误。请告诉我: 错误1找不到类型或命名空间名称“SubsystemErrorCode”(是否缺少using指令或程序集引用?) 如果我将子系统错误代码移到同一个文件中。没有错误。但我真的希望他们分开。我该怎么做?谢谢 文件

我有一个C#文件a,它定义了一些公共枚举和公共结构。现在我需要为它们定义错误代码。我在文件B中定义了一个名为SubsystemErrorCode的枚举。A和B中都没有类。它们位于文件A的一个结构中的同一命名空间中,我尝试使用SubsystemErrorCode枚举,但它给了我错误。请告诉我: 错误1找不到类型或命名空间名称“SubsystemErrorCode”(是否缺少using指令或程序集引用?)

如果我将子系统错误代码移到同一个文件中。没有错误。但我真的希望他们分开。我该怎么做?谢谢

文件A:

namespace SystemSoftware { 
    public struct StatusMessageBody { 
        public ProcessControlStatus State; 
        public StatVal LVP_OK; 
        public SubsystemErrorCode LVP_ERROR_CODE; 
    } 
} 
文件B:

namespace SystemSoftware 
{ 
    //public class ErrorCode 
    //{ 
    public enum SubsystemErrorCode : byte 
    {
        NoError = 0, 
        EPCSS_CPU_ERROR = 1, 
        LVPS_ERROR 
    } 
    //} 
} 

认为您缺少USING语句或未添加对库的引用。

将枚举文件更改为此

namespace SystemSoftware.Enums 
{  
    public enum SubsystemErrorCode : byte  
    { 
        NoError = 0,  
        EPCSS_CPU_ERROR = 1,  
        LVPS_ERROR  
     }    
} 
在您的文件A中,将其放在顶部(在使用系统的
下;

或者你也可以在文件中尝试

public SystemSoftware.Enums.SubsystemErrorCode LVP_ERROR_CODE; 
而不是

public SubsystemErrorCode LVP_ERROR_CODE; 
编辑:忘了说,我假设文件A和文件B都在同一个项目中? 如果没有,您需要在项目a中引用项目B

确定再次编辑。 正如你所说,我在同一个项目中创建了两个文件。它起作用了,它们在这里

File1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SystemSoftware
{
    public struct StatusMessageBody
    {
        public SubsystemErrorCode LVP_ERROR_CODE;
    }
}
File2.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SystemSoftware
{
    //public class ErrorCode  
    //{  
    public enum SubsystemErrorCode : byte
    {
        NoError = 0,
        EPCSS_CPU_ERROR = 1,
        LVPS_ERROR
    }
    //}  
} 

出现问题的唯一原因是文件A和B不在同一项目中


在这种情况下,包含文件A的项目必须引用定义了文件B的项目。

可能是打字错误?你能发布一些代码吗?文件A:名称空间系统软件{public struct status messagebody{public ProcessControlStatus;public StatVal LVP_OK;public subsystemrorcode LVP_ERROR_code;}}}文件B:名称空间系统软件{//public class ErrorCode//{public enum SubsystemErrorCode:byte{NoError=0,EPCSS_CPU_ERROR=1,LVPS_ERROR}/}我刚刚将结构和enum粘贴到两个文件中。编译良好?enum被识别…这两个文件在同一个项目中吗?(假设您使用的是Visual studio,如果不是,这两个文件是否编译为同一个dll/exe?)@5YrsLaterDBA:请注意,如果您回答了上述问题,您可能会在大约十分钟前得到答案。特别是关于文件是否在同一个项目中的问题。我想到了添加枚举名称空间的想法,但为什么这会对编译产生影响,因为它们在其原始版本中都位于同一名称空间中代码?如果没有Enums名称空间,它应该可以编译,我应该确定它为什么没有,而且它在我看来更干净。我们有一个Enums项目,所以如果有需求的话,是的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SystemSoftware
{
    //public class ErrorCode  
    //{  
    public enum SubsystemErrorCode : byte
    {
        NoError = 0,
        EPCSS_CPU_ERROR = 1,
        LVPS_ERROR
    }
    //}  
}