在类库中添加可选参数不提供向后兼容性

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"。严格的向后兼容性可能会受到很大的限制 - 如今 只是 与在构建时选择新的软件包版本相比,将新的二进制文件放入构建的应用程序中相对较少。