So, I have an abstract class with a method with 3 parameters, which is overridden in a particular base class.
The abstract method is in the following form:
internal override void SummonJonSkeet(string dumbQuestion, int a, int b)
// Call upon Jon Skeet and his followers to correct my ignorant ways.
Another option (given that you mentioned the parameters are really coordinates that may or may not be used) could be just to make the values nullable with default values of null.
internal override void SummonJonSkeet(string dumbQuestion, int? a = null, int? b = null)
You'd have to match the abstract definition as well, but this shows the approach.
This allows the sub-classes to call
SummonJonSkeet("my question") or
SummonJonSkeet("my question", 1, 2) based on its implementation. The sub-classes that expect the values can then check
a != null to throw errors when values does not exist for parameters when expected to have values. To get the primitive value, just call