2009-07-23 2 views
2

Marshal.SizeOfMarshal.SizeOf를 사용하여 구조체에서 필드 크기를 무시하는 방법은 무엇입니까?

를 사용하여 구조체의 크기 계산에 필드를 무시하는 방법이 있나요

예 :

public struct Message 
{ 
    public ushort X; 
    public ushort Y; // Ignore this field in the calculation 
} 

int size = Marshal.SizeOf(typeof(Message)); 

은 지금 크기 4. 내가 2 될 수있는 크기가 있는가 싶어한다 이 일을하는 방법?

+0

노조는 명시 적으로 필드 오프셋을 동일하게 설정하면됩니다 (C#에는 공용체가 있음). 그렇게하고 싶지 않습니다. – SwDevMan81

+0

나는 왜 우리가 당신을 도울 수 있기를 원한다고 설명해야한다고 생각합니다. 원하는 모든 것이 "2"가되도록하려면, 리터럴 2로 바꾸지 않으시겠습니까? 또는 typeof (ushort)를 marshal.sizeof() 호출에 전달하십시오. –

답변

2

내가 생각하는 유일한 방법은 Custom Marshaller을 만들고 ICustomMarshaller을 구현하는 것입니다. GetNativeDataSize이면 0을 반환합니다. MarshalAsAttribute을 사용하면 해당 필드에만 사용자 지정 마샬 러를 적용 할 수 있습니다. 하지만, 마샬링이 제대로되지 않으므로 왜 그렇게하고 싶지는 모르겠습니다.

0

나는 그렇게 생각하지 않습니다. 왜 그걸하고 싶니?

관련 문제