public Module(string a, object obj) : this(a, null, obj) { }
public Module(string b, object obj) : this(null, b, obj) { }
These constructor overloads
Parameter names are meaningless in the context of overloads. I can see what you are trying to do, but I'm not sure why. I would dispense with it entirely:
public Module(string a, string b, object obj){}
Then call the Module
constructor, passing in null
values as appropriate.
Module m = new Module(null, "hi", obj);
Module m2 = new Module("bye", null, obj);