是否可以做类似的事情:
using MyCustomDto = (flag == "library1") ? MyLibrary1.Dtos.MyDto1 : MyLibrary2.Dtos.MyDto2;
Run Code Online (Sandbox Code Playgroud)
我不能为此找到正确的语法。因此,根据appsettings.config中的标志,我想从特定的库加载Dto,它们具有不同的名称空间,如您所见,这将是using指令块的一部分,在该块中,您通常会看到以下语句:
using System.Collections.Generic;
Run Code Online (Sandbox Code Playgroud)
No. using指令在编译时有效,在执行时无效。
您可能具有不同的编译时配置,定义了不同的编译器符号,然后使用:
#if LIBRARY1
using MyLibrary1.Dtos.MyDto1;
#else
using MyLibrary2.Dtos.MyDto1;
#endif
Run Code Online (Sandbox Code Playgroud)
但这将是一次完全的编译时检查,并且无法使用appsettings进行修改。
为了实现真正的动态,您需要在两种情况下都使用通用类型,并可能在执行时选择特定于库的子类。在不了解您要实现的目标的情况下很难给出具体的示例,但这与其他指令无关using。代码中的类型将始终意味着同一件事,它们可以使用不同的派生类以不同的方式实例化。
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |