我有這樣方法可空DateTime和字符串參數之間超載-Distinguish
public interface IPrice
{
IEnumerable<Price> GetPrice(string portalShopName);
IEnumerable<Price> GetPrice(DateTime? lastRunDate);
}
在這種情況下,一個接口如何訪問第二種方法使用一個可爲空的DateTime
我有這樣方法可空DateTime和字符串參數之間超載-Distinguish
public interface IPrice
{
IEnumerable<Price> GetPrice(string portalShopName);
IEnumerable<Price> GetPrice(DateTime? lastRunDate);
}
在這種情況下,一個接口如何訪問第二種方法使用一個可爲空的DateTime
你應該先實現你的界面一類是這樣的:
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);
METHODNAME是same.how與空值和日期時間用繩子來區分null值 – vmb
@vmb ..那麼當你發送一個參數爲'DateTime'時,它將使用'DateTime'調用該方法,當你傳遞一個'string'時,它將調用字符串版本。 –
由於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();
..感謝..我會看起來 – vmb
'用getPrice((日期時間?)空)' – PetSerAl
Ok..i將檢查 – vmb
我將與PetSerAl answer..it去工作 – vmb