C# 在自定义封送拆收器中使用SizeConst和SizeParamIndex?
我目前正在尝试为UTF-8C字符串实现一个自定义封送拆收器。 问题是,我处理的字符串不一定以null结尾,因此我需要依赖它们的常量大小或大小参数。 当将它们封送为LPStr时,我可以使用SizeParamIndex和SizeConst MarshalAs属性参数,但我似乎无法访问ICustomMarshaler实现中的属性参数 我希望避免在每个函数上使用Byte[]和手动UTF-8转换,但这似乎是唯一的方法? 或者我是否缺少访问SizeParamIndex/SizeConst信息的方法?C# 在自定义封送拆收器中使用SizeConst和SizeParamIndex?,c#,.net,mono,C#,.net,Mono,我目前正在尝试为UTF-8C字符串实现一个自定义封送拆收器。 问题是,我处理的字符串不一定以null结尾,因此我需要依赖它们的常量大小或大小参数。 当将它们封送为LPStr时,我可以使用SizeParamIndex和SizeConst MarshalAs属性参数,但我似乎无法访问ICustomMarshaler实现中的属性参数 我希望避免在每个函数上使用Byte[]和手动UTF-8转换,但这似乎是唯一的方法? 或者我是否缺少访问SizeParamIndex/SizeConst信息的方法? 即使我
即使我能够以某种方式将这些数据传递到封送处理程序中,我如何获得SizeParamIndex的实际大小值?这是无法实现的。唯一的备份计划是将其封送为IntPtr。我现在将它们作为LPArray封送到一个字节[],这样可以节省IntPtr的转换,还是有问题,比如.NET试图释放指针(如果指针是委托回调的参数)?