2009-07-13 3 views
3

VS2005에서 C#을 사용하고 있습니다. 여러 개의 다른 프로젝트에 공통적 인 여러 enum을 포함하는 클래스 라이브러리가 있습니다. 이 열거 형 중 하나에 액세스 할 때 열거 형을 포함하는 네임 스페이스에 'using'지시문을 선언했지만 enum에 대한 전체 네임 스페이스 경로를 지정해야합니다. 예를 들어다른 네임 스페이스의 열거 형 액세스

나는 다음 열거 한 : 나는 다른 프로젝트에서 다음

namespace Company.General.Project1 
{ 
    public static class Rainbow 
    { 
    [Flags] 
    public enum Colours 
    { 
     Red, 
     Blue, 
     Orange 
    } 
    } 
} 

있습니다

using Company.General.Project1; 

namespace Company.SpecialProject.Processing 
{ 
    public class MixingPallette 
    { 
    int myValue = Company.General.Project1.Colours.Red; 
    } 
} 

를 내가의 클래스를 포함하는 프로젝트를 참조하는 '사용'지시를하더라도 열거 형, 나는 열거 형수가 여전히 쓸 필요가있다. 이유는 다음을 수행 할 수 ...

using Company.General.Project1; 

namespace Company.SpecialProject.Processing 
{ 
    public class MixingPallette 
    { 
    int myValue = Colours.Red; 
    } 
} 

답변

15

귀하의 열거는 네임 스페이스에없는 -가 중첩 된 형태입니다. 사실, 코드가 작동하지 않을 것 "작업"샘플, 그것은

int myValue = (int) Company.General.Project1.Rainbow.Colours.Red; 

될 것이다 (뿐만 아니라 당신이 Rainbow 부분을 포함해야하지만 int로 열거로부터 암시 적 변환도 없다 않습니다.)

당신의 열거 최상위 ​​유형 확인 :

namespace Company.General.Project1 
{ 
    [Flags] 
    public enum Colours 
    { 
     Red, 
     Blue, 
     Orange 
    } 
} 

그런 다음 당신이 쓸 수를 :

using Company.General.Project1; 

... 

Colours x = Colours.Red; 
int y = (int) Colours.Red; 

([Flags]을 효과적으로 사용하려면 값을 명시 적으로 할당해야합니다. 1, 2, 4, 8 ...)


편집 : 난 당신이 정말 당신은 중첩 된 형식을 사용하여 현재 구조를 유지할 수 Colours.Red 등을 사용할 수 있도록 하시겠습니까 가정했습니다 그리고 다음과 같이 작성하십시오 :

열거 형을 중첩시키는 특별한 이유가없는 한, 나는 그렇지 않습니다.

+0

또는'INT myValue = (int)를 Rainbow.Colours .Red;'ofcourse, – Dykam

+0

+1 - Rainbow 클래스 내에 보관하면 단축 버전으로 "Rainbow.Colours.Red"를 사용할 수 있어야합니다. – AdaTheDev

+0

예 - 저는 OP가 그렇게하고 싶지 않다고 가정했습니다. 편집 할 것입니다 ... –

0

정적 클래스에서 열거 형을 이동할 수 있습니다. 자체적으로 존재할 수 있습니다.

namespace Company.General.Project1 
{ 
    [Flags] 
    public enum Colours 
    { 
    Red, 
    Blue, 
    Orange 
    } 
} 

using Company.General.Project1; 

namespace Company.SpecialProject.Processing 
{ 
    public class MixingPallette 
    { 
    int myValue = (int)Colours.Red; 
    } 
} 

을하지만 당신이 정적 클래스 내에서 열거를 유지하는 경우, 다음은 그 문맥에서 참조 할 수 있습니다 : 그래서이 작동합니다

using Company.General.Project1; 

namespace Company.SpecialProject.Processing 
{ 
    public class MixingPallette 
    { 
    int myValue = (int)Rainbow.Colours.Red; 
    } 
} 
관련 문제