Search code examples
c#wcfservicecontract

Is changing a parameter in a OperationContract to it's Nullable<T> equivalent considered a breaking change?


Consider the following ServiceContract-Interface:

[ServiceContract]
public interface ITest
{
    [OperationContract]
    void MyMethod(int a, int b);
}

Now we change it to the following (effectively changing parameter int a to a int? a):

[ServiceContract]
public interface ITest
{
    [OperationContract]
    void MyMethod(int? a, int b);
}

Would a client consuming this WCF-Service need to make additional changes to work with the new service definition?


Solution

  • I finally had time to test everything and figured out my own answer.

    It is not a breaking change for the following frameworks:

    • .NET (C#, 4.5)
    • Java 8

    I did not test anything else as it doesn't matter for our scenario.

    This means every client still works (without regenerating the client) even after updating the web service definition