在类库中添加可选参数不提供向后兼容性
Adding Optional parameter in ClassLibrary Does not Provide BackWord Compatibility
我正在我的类库中添加可选参数
例子
public static string GetData(string name, string surname, bool status = false){}
而我的 ASPX 页面正在调用方法
GetData(string name, string surname)
我刚刚重建了 ClassLibrary 而不是 ASP 页面。然后它抛出错误找不到方法
请帮忙
如何保持向后兼容性?意味着如果我只 replce 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
可选,但这没有多大意义,因为任何不提供参数的调用者最终都会调用两个 -参数版本。不过,如果您要添加多个参数,它会更有意义。
您可能需要考虑是否可以忍受 "rebuilding compatibility",即 "all is okay if I rebuild"。严格的向后兼容性可能会受到很大的限制 - 如今 只是 与在构建时选择新的软件包版本相比,将新的二进制文件放入构建的应用程序中相对较少。
我正在我的类库中添加可选参数
例子
public static string GetData(string name, string surname, bool status = false){}
而我的 ASPX 页面正在调用方法
GetData(string name, string surname)
我刚刚重建了 ClassLibrary 而不是 ASP 页面。然后它抛出错误找不到方法
请帮忙 如何保持向后兼容性?意味着如果我只 replce 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
可选,但这没有多大意义,因为任何不提供参数的调用者最终都会调用两个 -参数版本。不过,如果您要添加多个参数,它会更有意义。
您可能需要考虑是否可以忍受 "rebuilding compatibility",即 "all is okay if I rebuild"。严格的向后兼容性可能会受到很大的限制 - 如今 只是 与在构建时选择新的软件包版本相比,将新的二进制文件放入构建的应用程序中相对较少。