如何在没有IntPtr的情况下编组C#struct ref?

时间:2015-01-09 05:14:00

标签: c# clr

我有几个C结构看起来像:

struct Bar
{
    int x;
};

struct Foo
{
    Bar* bar;
};

我想创建如下所示的C#结构:

struct Bar
{
    Int32 x;
}

struct Foo
{
    Bar? bar;
}

所以我可以在C / C#和C#访问x之间编组Foo,如foo.bar.x

自从我完成任何互操作以来已经有很长一段时间了,但我猜测,因为Nullable<T>是一个ValueType,这不会做我想要的并正确编组到Bar*。我知道我可以让Foo看起来像struct Foo { IntPtr bar; }但是我想避免以后手动将IntPtr编组到一个Bar中,如果marshaller刚刚在我前面巧妙地为它做了这个,我会更喜欢它。

有没有办法可以注释bar,这样我就可以编组强类型的Bar指针?

后续行动:如果没有办法让C#自动进行编组,那么人们会采取哪些模式和做法来解决这类问题?

0 个答案:

没有答案