title: Mutually exclusive abstract methods in C#
body: <p>I am developing a C# library where the user needs to write his/her own classes inheriting from given classes from the library. I don't think writing further details will be helpful, so please even if what I am asking for looks strange, consider it as such.</p>
  
  <p>In one class, I would like the following behavior: two mutually exclusive "<code>abstract</code>" methods such that if one is implemented then there is no need to implement the other (so right, they are not really <code>abstract</code>).</p>
  
  <p>I need to force the user to implement at least one of these methods, so declaring both methods <code>virtual</code> only is not enough. Actually I could declare both <code>abstract</code>, but it means the user should implement a method that would never be called afterwards and of course I want to avoid that.</p>
  
  <p>Is there a trick or a C# idiom to do something close to what I want? Maybe with some reflection tricks I know almost nothing about?</p>