4

我们有一个库,其中包含许多重载的方法,方法签名从值类型更改为可空值类型,如下所示:

一个。)IsEmpty(int obj, int defaultValue)

乙)IsEmpty(int? obj, int defaultValue)

如您所见,唯一的区别是 B 可以为空。在我办公室的大多数工作站上,这种重载编译和类型被认为是真正不同的。

但是,由于某种原因,我所有的机器和虚拟机都无法编译。我们目前对为什么会发生这种情况感到困惑。我使用的机器应该接近其他正在工作/编译的机器的镜像。

以下是编译期间出现的错误示例:

  • 错误 28 以下方法或属性之间的调用不明确:“BayTech.Common.Fix.IfEmpty(System.Guid, System.Guid)”和“BayTech.Common.Fix.IfEmpty(System.Guid, System.Guid?) ' C:\Projects\Applications\JukeWeb\BayTech\Internal\Common Library\VS2010\Apps\BayTech.Common\Conversion\Fix.Empty.SL.cs 55 17 BayTech.Common

  • 错误 11 以下方法或属性之间的调用不明确:“BayTech.Common.Fix.IfEmpty(System.DateTime, System.DateTime)”和“BayTech.Common.Fix.IfEmpty(System.DateTime, System.DateTime?) ' C:\Projects\Applications\JukeWeb\BayTech\Internal\Common Library\VS2010\Apps\BayTech.Common\Conversion\Fix.Empty.SL.cs 35 17 BayTech.Common

  • 错误 165 以下方法或属性之间的调用不明确:'BayTech.Common.Fix.IfEmpty(string, System.Guid)' 和 'BayTech.Common.Fix.IfEmpty(string, System.Guid?)' C:\ Projects\Applications\JukeWeb\BayTech\Internal\Common Library\VS2010\Apps\BayTech.Common\Conversion\Fix.IfEmpty.Xml.cs 259 17 BayTech.Common

有谁知道为什么会发生这种情况?

以下是有关环境设置的一些信息:

  • VS2010
  • Idealblade(最新安装)
  • 已安装 Telerik 控件,包括 Just-In-Code
  • 包含 VS 和 Windows 7 的所有服务包
  • 包含 VS 和 Windows 7 的所有服务包
  • Win7 终极版
  • SQL 2008 R2
  • 用于 T4 模板的 VSExtensions、PostSharp、
  • Codesmith Professional 已安装
  • 安装了 VisualSVN
  • 开发快递
  • 已安装 SQLComplete
4

1 回答 1

-1

没有理由进行这样的实施。如果您期望或想要处理这种情况,请使用内置语言功能并仅保留可为空的实现。可空类型具有 .hasvalue 或 .defaultValue 等属性。

于 2013-11-18T23:13:26.710 回答