动态使用指令
Dynamic using directives
是否可以这样做:
using MyCustomDto = (flag == "library1") ? MyLibrary1.Dtos.MyDto1 : MyLibrary2.Dtos.MyDto2;
我想不出正确的语法。因此,根据 appsettings.config 中的标志,我想从特定库加载 Dto,如您所见,它们具有不同的命名空间,这将是 using
指令块的一部分,您通常会在其中看到语句如:
using System.Collections.Generic;
没有。 using
指令在 编译时 生效,而不是 执行时 。
您可以有不同的编译时配置,定义不同的编译器符号,然后使用:
#if LIBRARY1
using MyLibrary1.Dtos.MyDto1;
#else
using MyLibrary2.Dtos.MyDto1;
#endif
但这将是一个完整的编译时检查,无法使用 appsettings 进行修改。
要实现真正的动态,您需要在两种情况下都使用一种通用类型,并可能在执行时选择特定于库的子类。很难给出一个
具体示例,但不了解您要实现的目标,但 不是 不同 using
指令的问题。代码中的类型总是意味着同样的事情,它们可能只是被不同地实例化,使用不同的派生 类.
是否可以这样做:
using MyCustomDto = (flag == "library1") ? MyLibrary1.Dtos.MyDto1 : MyLibrary2.Dtos.MyDto2;
我想不出正确的语法。因此,根据 appsettings.config 中的标志,我想从特定库加载 Dto,如您所见,它们具有不同的命名空间,这将是 using
指令块的一部分,您通常会在其中看到语句如:
using System.Collections.Generic;
没有。 using
指令在 编译时 生效,而不是 执行时 。
您可以有不同的编译时配置,定义不同的编译器符号,然后使用:
#if LIBRARY1
using MyLibrary1.Dtos.MyDto1;
#else
using MyLibrary2.Dtos.MyDto1;
#endif
但这将是一个完整的编译时检查,无法使用 appsettings 进行修改。
要实现真正的动态,您需要在两种情况下都使用一种通用类型,并可能在执行时选择特定于库的子类。很难给出一个
具体示例,但不了解您要实现的目标,但 不是 不同 using
指令的问题。代码中的类型总是意味着同样的事情,它们可能只是被不同地实例化,使用不同的派生 类.