public Module(string a, object obj) : this(a, null, obj) { }
public Module(string b, object obj) : this(null, b, obj) { }
These constructor overloads
It's just not possible. You should remove those two constructor overloads.
However, you could work with static factory methods instead. Make sure to use clear names to convey the difference to the API consumer.
static Module CreateA(string a, object o) { return new Module(a, null, o); }
static Module CreateB(string b, object o) { return new Module(null, b, o); }