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