方法重载-区分可空DateTime和字符串参数

本文关键字:DateTime 字符串 参数 重载 -区 方法 | 更新日期: 2023-09-27 18:17:32

我有一个这样的界面

public interface IPrice
{
    IEnumerable<Price> GetPrice(string portalShopName);
    IEnumerable<Price> GetPrice(DateTime? lastRunDate);
}

在这种情况下,我如何访问第二个方法与一个可空DateTime

方法重载-区分可空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);