在ClassLibrary中添加可选参数不提供BackWord兼容性
本文关键字:BackWord 兼容性 参数 ClassLibrary 添加 | 更新日期: 2023-09-27 18:06:34
我在My ClassLibrary中添加了可选参数
例子public static string GetData(string name, string surname, bool status = false){}
我的ASPX页面正在调用方法
GetData(string name, string surname)
我只是重建ClassLibrary而不是ASP页面。然后抛出错误方法未找到
请帮助如何保持向后兼容性?意味着如果我只替换classlibrary,那么它不应该影响我的ASP页面。我正在使用。net版本4
谢谢
如果你真的想要二进制兼容性,那么是的,你甚至不能添加一个可选参数。可以做的是添加一个重载:
:
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
为可选的,但这没有多大意义,因为任何不提供参数的调用者最终都会调用双参数版本。但是,如果您添加了多个参数,则会更有意义。
你可能很想考虑你是否可以忍受"重建兼容性",即:"如果我重建,一切都好"。严格的向后兼容性可能会受到很大的限制——现在只是将一个新的二进制文件放入构建的应用程序中,与构建时选择一个新的包版本相比,相对较少。