2012-10-10 1 views
3

현재 네이티브 코드를 다양한 구조, 대리자, 열거 및 외부 메서드 호출로 구성된 C#으로 이식하고 있습니다..NET에서의 네이티브 상호 운용성을위한 코드 구성

구조 내의 일부 필드에는 특정 상수가 적용될 것으로 예상됩니다. 별도의 위치가 아닌 구조 내의 상수를 나열하는 것이 논리적 인 것처럼 보입니다. 모든 구성을 유지해야하므로 네이티브 호출과의 마샬링/상호 운용성 중에 구조에 어떤 영향을 미치는지 확신 할 수 없습니다.

말은 예를 들어 내 구조가 같은 경우로 정의 하였다 :이 경우에

[StructLayout(LayoutKind.Sequential)] 
public struct NATIVE_STRUCTURE 
{ 
    public int Value; 
} 

값은 다음 상수

VALUE1 = 0x0001; 
VALUE2 = 0x0002; 

중 하나를해야 할 수 있습니다 그래서 나 같은 이러한 구조를 작성하기위한 안전 그래서 :

[StructLayout(LayoutKind.Sequential)] 
public struct NATIVE_STRUCTURE 
{ 
    public int Value; 

    public const int VALUE1 = 0x0001; 
    public const int VALUE2 = 0x0002; 
} 

어떤 사람이 이것이 런타임시 코드 (있는 경우). 감사.

답변

2

열거 형을 사용하는 것이 좋습니다. 다음과 같은 것 :

[StructLayout(LayoutKind.Sequential)] 
public struct NATIVE_STRUCTURE 
{ 
    public NativeFoo FooValue; 
} 

public enum NativeFoo 
{ 
    VALUE1 = 0x0001, 
    VALUE2 = 0x0002, 
} 
+0

예, 저는이 방법에 대해 생각했습니다. 불행하게도 이것은 약 2000 개의 구조체가 있기 때문에 많은 열거 형을 추가 할 것이며 그 중 하나는 여러 개의 열거 형을 요구할 수 있습니다. 그러나 노력 +1, 감사합니다! – series0ne

+3

@activwerx 그 많은 구조체를 사용하면 [SWIG] (http://www.swig.org/)를 만드는 방법을 이해하면 도움이 될 것입니다. 나는 개인적으로 그것을 사용하지 않았다. –

+0

VALUE1 및 VALUE2의 값은 모두 0x1입니다. – Henrik