所以我有一系列全球功能,比如说:
foo_f1(int a, int b, char *c);
foo_f2(int a);
foo_f3(char *a);
Run Code Online (Sandbox Code Playgroud)
我想围绕这些做一个C++包装,比如:
MyFoo::f1(int a, int b, char* c);
MyFoo::f2(int a);
MyFoo::f3(char* a);
Run Code Online (Sandbox Code Playgroud)
大约有40个这样的函数,其中35个我只想传递给全局函数,另外5个我想做一些与之不同的函数.
理想情况下,MyFoo.cpp的实现类似于:
PASSTHRU( f1, (int a, int b, char *c) );
PASSTHRU( f2, (int a) );
MyFoo::f3(char *a)
{
//do my own thing here
}
Run Code Online (Sandbox Code Playgroud)
但是我很难找到一种优雅的方法来制作上面的PASSTHRU宏.
我真正需要的是像下面神话般的X getArgs():
MyFoo::f1(int a, int b, char *c)
{
X args = getArgs();
args++; //skip past implicit this..
::f1(args); //pass args to global function
}
Run Code Online (Sandbox Code Playgroud)
但是,如果没有进入汇编,我找不到getArgs()的良好实现.
因此,出于商业原因,我需要强制JSON.NET转义JSON blob,如下所示:
{ url: 'http://some.uri/endpoint' }
如
{ "url": "http:\/\/some.uri\/endpoint" }
也就是说它需要逃避前向斜线的固定字符.我知道 JSON规范不需要这个,而且从技术上讲两者是相同的,但在这种特殊情况下,我需要使用JSON.NET创建完全相同的字符串,因为我从其他地方获取.
强制JSON.NET执行此操作的最佳方法是什么?
创建一个新的JSONConverter子类(例如MyPedanticStringConverter)并使用它是否有意义?
string json = JSONConvert.SerializeObject(
myObject,
Formatting.None,
new MyPedanticStringConverter());
Run Code Online (Sandbox Code Playgroud)