在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

谢谢

在ClassLibrary中添加可选参数不提供BackWord兼容性

如果你真的想要二进制兼容性,那么是的,你甚至不能添加一个可选参数。可以做的是添加一个重载:

:

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为可选的,但这没有多大意义,因为任何不提供参数的调用者最终都会调用双参数版本。但是,如果您添加了多个参数,则会更有意义。

你可能很想考虑你是否可以忍受"重建兼容性",即:"如果我重建,一切都好"。严格的向后兼容性可能会受到很大的限制——现在只是将一个新的二进制文件放入构建的应用程序中,与构建时选择一个新的包版本相比,相对较少。