在C#中,有没有一种方法可以在运行时分配条件方法或添加预处理器指令?

在C#中,有没有一种方法可以在运行时分配条件方法或添加预处理器指令?,c#,debugging,runtime,c-preprocessor,C#,Debugging,Runtime,C Preprocessor,其目的是能够在运行时从生产构建上的数据库打开调试调用…而不是在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为普通代码检查,这显然可以根据需要进行切换。不在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为正常的代码检查,这显然可以根据需要进行切换。您显然不能影响二进制代码本身(如#if语句) 我通常做的是确保我的代码包含大量日志记录,这些日志记录是由激活的。这样,您就可以在生产环境中运行一个系统,几乎不需要日志记录,并且当您想研究某个问题时

其目的是能够在运行时从生产构建上的数据库打开调试调用…

而不是在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为普通代码检查,这显然可以根据需要进行切换。

不在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为正常的代码检查,这显然可以根据需要进行切换。

您显然不能影响二进制代码本身(如#if语句)


我通常做的是确保我的代码包含大量日志记录,这些日志记录是由激活的。这样,您就可以在生产环境中运行一个系统,几乎不需要日志记录,并且当您想研究某个问题时,可以通过更改配置文件来打开日志记录。

您显然无法影响二进制代码本身(如#if语句)


我通常做的是确保我的代码包含大量日志记录,这些日志记录是由激活的。这样,您就可以在生产环境中运行一个系统,几乎不需要日志记录,当您想研究某个问题时,可以通过更改配置文件来打开日志记录。

no;条件方法和预处理器指令的要点是,它们会导致编译器从最终可执行文件中省略代码。这些语句的运行时等价物是
if
语句

然而,它大致相当于您所要求的,因为它允许您将代码注入到正在运行的程序中,否则该程序将不存在


编辑:正如Joe提到的,实现这一点的方法是针对log4net这样的日志框架进行编程,该框架允许对记录的内容进行细粒度控制。

否;条件方法和预处理器指令的要点是,它们会导致编译器从最终可执行文件中省略代码。这些语句的运行时等价物是
if
语句

然而,它大致相当于您所要求的,因为它允许您将代码注入到正在运行的程序中,否则该程序将不存在


编辑:正如Joe提到的,实现这一点的方法是针对log4net这样的日志框架进行编程,该框架允许对记录的内容进行细粒度控制。

否,但大多数日志子系统都提供了这一功能。例如,使用log4net,您可以动态更改日志记录级别,或者如果使用System.Diagnostics.Trace,您可以动态更改级别。

否,但大多数日志记录子系统都提供此功能。例如,使用log4net,您可以动态更改日志记录级别,或者如果使用System.Diagnostics.Trace,您可以动态更改日志记录级别