2016-09-12 67 views
0

我添加可選參數在我的ClassLibrary添加在ClassLibrary可選參數不提供BackWord兼容性

public static string GetData(string name, string surname, bool status = false){} 

和我的ASPX頁面調用方法

GetData(string name, string surname) 

我只是重建ClassLibrary而不是ASP頁面。然後它拋出錯誤找不到的方法

請幫忙 如何保持向後兼容性?意味着如果我只是classlibrary,那麼它不應該影響我的ASP頁面。我是個使用.NET版本4

謝謝

+2

使用附加參數創建重載而不是使用可選參數。 – Joe

+1

這個問題有答案爲什麼這不工作:http://stackoverflow.com/questions/7516256/is-using-optional-parameters-for-backwards-compatibility-a-good-idea?rq=1 – AsheraH

+0

@AsheraH:我讀過上面的評論,但沒有明白爲什麼它會造成問題以及如何克服 – Akshay

回答

1

如果你真的想要的二進制兼容性,然後是的,你可以不加,甚至可選參數。你可以做的就是添加一個過載:

前:

public static string GetData(string name, string surname) 
{ 
    // Real code 
} 

後:

public static string GetData(string name, string surname) 
{ 
    return GetData(name, surname, false); 
} 

public static string GetData(string name, string surname, bool status) 
{ 
    // Real code 
} 

請注意,您可以使可選status,但不會有太大因爲任何不提供參數的調用者最終都會調用雙參數版本。如果您添加了多個參數,它會更有意義。

您可能想要考慮您是否可以與「重建兼容性」一起生活,即「如果我重建,一切都可以」。嚴格的向後兼容性可能是非常嚴格的 - 現在只是與構建新的軟件包版本相比,將新的二進制文件放入構建的應用程序相對較少。

相關問題