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

时间:2010-02-02 20:25:49

标签: c#

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

如果我将SubsystemErrorCode移动到同一个文件中。没有错误。但我真的希望他们分开。我怎样才能做到这一点?感谢,

档案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 
    } 
    //} 
} 

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

将您的枚举文件更改为此

namespace SystemSoftware.Enums 
{  
    public enum SubsystemErrorCode : byte  
    { 
        NoError = 0,  
        EPCSS_CPU_ERROR = 1,  
        LVPS_ERROR  
     }    
} 

并在您的文件A中将其置于顶部(在using System;下)

using SystemSoftware.Enums;

或者您可以在文件A中尝试

public SystemSoftware.Enums.SubsystemErrorCode LVP_ERROR_CODE; 

而不是

public SubsystemErrorCode LVP_ERROR_CODE; 

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

Ok再次编辑。 我在同一个项目中创建了两个文件,就像你说的那样。它起作用,在这里。

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
    }
    //}  
}