我有几个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#自动进行编组,那么人们会采取哪些模式和做法来解决这类问题?