2015-10-14 87 views
1

我有這樣方法可空DateTime和字符串參數之間超載-Distinguish

public interface IPrice 
{ 
    IEnumerable<Price> GetPrice(string portalShopName); 

    IEnumerable<Price> GetPrice(DateTime? lastRunDate); 

} 

在這種情況下,一個接口如何訪問第二種方法使用一個可爲空的DateTime

+6

'用getPrice((日期時間?)空)' – PetSerAl

+0

Ok..i將檢查 – vmb

+0

我將與PetSerAl answer..it去工作 – vmb

回答

0

你應該先實現你的界面一類是這樣的:

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); 
+0

METHODNAME是same.how與空值和日期時間用繩子來區分null值 – vmb

+0

@vmb ..那麼當你發送一個參數爲'DateTime'時,它將使用'DateTime'調用該方法,當你傳遞一個'string'時,它將調用字符串版本。 –

1

由於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(); 
+0

..感謝..我會看起來 – vmb

相關問題