方法重载-区分可空DateTime和字符串参数
本文关键字:DateTime 字符串 参数 重载 -区 方法 | 更新日期: 2023-09-27 18:17:32
我有一个这样的界面
public interface IPrice
{
IEnumerable<Price> GetPrice(string portalShopName);
IEnumerable<Price> GetPrice(DateTime? lastRunDate);
}
在这种情况下,我如何访问第二个方法与一个可空DateTime
正如PetSerAl所写的注释,您可以像这样转换:
IPrice price = ...
var result = price.GetPrice((DateTime?)null);
但是,我建议为实现一个扩展方法来隐藏,例如:
public static class PriceExtensions {
//TODO: may be "GetDefaultPrice" is a better name for the method
public static IEnumerable<Price> GetPrice(this IPrice price) {
if (null == price)
throw new ArgumentNullException("price");
return price.GetPrice((DateTime?)null);
}
}
所以你可以写
IPrice price = ...
var result = price.GetPrice();
首先应该在这样的类中实现接口:
public class testClass : IPrice
{
public IEnumerable<Price> GetPrice(string portalShopName)
{
throw new NotImplementedException();
}
public IEnumerable<Price> GetPrice(DateTime? lastRunDate)
{
throw new NotImplementedException();
}
}
那么你可以这样调用GetPrice
:
testClass tst = new testClass();
tst.GetPrice((DateTime?)null);
tst.GetPrice((string) null);