The problem you see is caused by the fact that the first element in the method call is stringand therefore will always correspond to the call to the second method. You can do one of the following to solve the problem:
, , string:
this.GetErrorMessage(5, "Ticket Count");
string object:
this.GetErrorMessage((object)"Ticket Count", 5);
, params:
this.GetErrorMessage(new object[] {"Ticket Count", 5 });