我遇到了DateTime类与命名空间之间发生冲突的问题,因为某些未知原因也称为DateTime。
程序集 CompanyDateTime 具有名称空间 Company.DateTime
我的应用程序位于名称空间中:公司
问题是每次我需要使用 DateTime 类时,我必须明确地说 System.DateTime 是他们解决这个问题的方法吗?
可以说 SomeRandomStuff = Company.DateTime 并且 DateTime 始终为 System.DateTime
注意:
可能的决议? CompanyDateTime 是否可以自动部署到输出文件夹而不在引用中添加它?
答案 0 :(得分:9)
问题:问题是每次我需要使用DateTime类时,我都要明确地说System.DateTime是他们以任何方式解决这个问题
答案:上面已经回答 - 使用别名,例如
using CompanyDateTime = Company.DateTime;
using StandardDateTime = System.DateTime;
问题:CompanyDateTime是否可以自动部署到输出文件夹而不在引用中添加它?
答案:将此dll放在应用程序根文件夹中并创建一个postbuild事件,将其复制到输出文件夹。您可以在此处使用常规DOS COPY命令。
答案 1 :(得分:8)
是的,在代码文件的顶部使用using指令,就像这样引用它。
using SomeRandomStuff = Company.DateTime;
修改:您可能还需要另一个来解决歧义:
using DateTime = System.DateTime;
答案 2 :(得分:4)
为程序集添加别名(默认为global
,将其设置为其他内容)。您可以在选择引用时在Visual Studio的属性窗口中进行设置,或者在手动编译时使用编译开关进行设置。除非您在代码文件(extern alias myalias
)的顶部指定外部别名,否则编译器将仅解析全局别名中的内容。
请注意,这与其他人提到的命名空间别名不同。有了这个,您应该只需使用DateTime
来引用System.DateTime,而不是使用其他名称。如果您稍后需要参考另一个,则需要指定myalias::Company.DateTime...
答案 3 :(得分:2)
使用alias。
如果要在不使用System的情况下使用System.DateTime,请尝试:
using SysDate = System.DateTime;
然后,就像你上课一样引用它:
SysDate mySystemDotDateTime = new SysDate();