c# - C#编译器正在尝试编译为错误的重载方法

标签 c# compiler-errors overloading

我的项目是使用.Net 4.5的VS2012。

我的课上有以下重载方法:

public SalesOrder GetSalesOrder(int salesOrderID, bool forceRefresh = false)
{
    using (iSeriesUOW uow = new iSeriesUOW())
    {
        return GetSalesOrder(uow, salesOrderID, forceRefresh);
    }
}

public SalesOrder GetSalesOrder(iSeriesUOW uow, int salesOrderID, bool forceRefresh = false)
{
    .... do some stuff here
}

我正在尝试使用以下方法调用第一个方法:
public void PopulateModel(string companyCode, int salesOrderID, bool forceRefresh)
{
    SalesOrders blSalesOrders = new SalesOrders(companyCode);
    SalesOrder salesOrder = blSalesOrders.GetSalesOrder(salesOrderID, forceRefresh);

    ... Other code here
}

编译器在我的GetSalesOrder调用中给了我一个错误:
The type 'DataAccess.iSeriesUOW' is defined in an assembly that is not referenced. You must add a reference to assembly 'Viper.DataAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.  

如果我删除GetSalesOrder中的forceRefresh,则可以正常编译。

我在想它正在尝试调用第二次GetSalesOrder重载,但是我不知道为什么,因为(int,bool)的签名显然存在。

有任何想法吗?

最佳答案

我会尝试显式设置参数值:

代替

 SalesOrder salesOrder = blSalesOrders.GetSalesOrder(salesOrderID, forceRefresh);

我会尝试
public void PopulateModel(string companyCode, int salesOrderID, bool forceRefreshParam)
{
    SalesOrders blSalesOrders = new SalesOrders(companyCode);
    SalesOrder salesOrder = blSalesOrders.GetSalesOrder(salesOrderID, forceRefresh:forceRefreshParam);

    ... Other code here
}

关于c# - C#编译器正在尝试编译为错误的重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690019/

相关文章:

python - 是否可以为 native 数据类型重载运算符?

c# - 如何从我的 UWP 应用向用户显示状态?

c# - WPF多个按钮,点击功能相同但参数不同

Java重写和重载在编译时抛出错误?

java - 如何从 IJavaCompletionProposal 获取 CompilationUnit

compiler-errors - 如何编译FM-Index?

C++模板函数重载规则

c# - TabAppointment 选项卡中的 Outlook 2010 加载项

c# - 为什么在 .net 中使用 Invoke on Controls?

c - 如何修复 gcc 错误 : expected while before void