使用P/Invoke编组结构时,如何忽略字段

Tho*_*que 11 .net pinvoke structure ignore marshalling

我想编组一个与P/Invoke一起使用的结构,但是这个结构包含一个只与我的托管代码相关的字段,因此我不希望它被编组,因为它不属于本机结构.它甚至可能吗?我正在寻找类似于NonSerialized序列化的属性,但它似乎不存在......

struct MyStructure
{
    int foo;
    int bar;

    [NotMarshaled] // This attribute doesn't exist, but that's the kind of thing I'm looking for...
    int ignored;
}
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激

小智 6

没有办法让CLR忽略一个字段.我会改为使用两种结构,也许可以使另一种结构成为另一种结构.

struct MyNativeStructure 
{ 
    public int foo; 
    public int bar; 
} 

struct MyStructure 
{ 
    public MyNativeStruct native; 
    public int ignored; 
} 
Run Code Online (Sandbox Code Playgroud)