由于C#不支持宏,我正在寻找另一种(希望是优雅的)方法来编写一个方法,该方法根据条件编译符号返回不同类型的值。例如。 (如果可以使用宏)
#if ASYNC
#define ASYNC_VOID async Task
#else
#define ASYNC_VOID void
#endif
...
ASYNC_VOID Connect()
{
...
}
ASYNC_VOID Disconnect()
{
...
}
ASYNC_VOID Post()
{
...
}
ASYNC_VOID Delete()
{
...
}
我最好不要单独创建Connect和ConnectAsync方法,因为它们不需要同时在程序集中共存,并且代码重复会过多(感谢async / await模型,同步和异步版本是非常接近)。
我宁愿留下一个方法,只需让它以同步和异步模式编译。
是否有可能或者我总是要为每种方法都写这个?
#if ASYNC
async Task
#else
void
#endif
Connect()
{
...
}
答案 0 :(得分:1)
下面。您在下面有一个C#preprocessor directives的示例。你也可能需要这个/define compiler directive,但请注意源头开头的#define。
现在永远不要使用它。
#define abc
namespace ConsoleApplication2
{
class Class5
{
public
#if abc
int
#else
string
#endif
Foo()
{
#if abc
return 7;
#else
return "aa"
#endif
}
public void Bar()
{
#if abc
int
#else
string
#endif
thing = Foo();
}
}
}