动态使用指令

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 指令的问题。代码中的类型总是意味着同样的事情,它们可能只是被不同地实例化,使用不同的派生 类.