【问题标题】:decimal extension method ambiguous十进制扩展方法不明确
【发布时间】:2011-10-31 13:11:16
【问题描述】:

我为小数 AsCurrency(这个小数)创建了一个扩展方法

当我构建时我会得到一个错误

以下方法或属性之间的调用不明确: 'CurrencyHelper.AsCurrency(decimal)' 和 'CurrencyHelper.AsCurrency(十进制)'

什么鬼?如果我清除解决方案,它将再次构建。下次它会再次失败。

是小数的问题还是我的解决方案有问题?

有人遇到过同样的问题吗?

编辑

扩展在一个程序集中。 CurrencyHelper 只有一个定义。

代码如下:

public static class CurrencyHelper
{
    public static string AsCurrency(this decimal amount)
    {
        return ((decimal?) nr).AsCurrency();
    }

    public static string AsCurrency(this decimal? amount)
    {
        var cultureInfo = ...
        return (nr ?? 0).ToString("c2", cultureInfo);
    }
}

想法是用所需的cultureinfo格式化十进制值,如果数量为空,仍然提供0

【问题讨论】:

  • 您是否在两个不同的程序集中定义了CurrencyHelper?也许您已将.cs 文件共享到两者中?这会导致冲突......
  • 您能否对一个项目的扩展程序集有一个项目引用(正确),对同一个程序集有一个 dll 引用(错误)?然后你可能会遇到版本冲突,VS 会看到同一个 dll 的两个版本。虽然我会期待一个“版本冲突”错误......
  • 在同一个项目中定义和使用。没有其他地方

标签: c# visual-studio extension-methods


【解决方案1】:

好的。问题解决了

似乎我们团队中的某个人添加了对项目本身的引用。谢谢你的提示,汉斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2016-10-21
    • 2016-12-15
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多