我的项目是使用.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/