You can't set anything on an object until it's been instantiated, so your requirement (as stated) is impossible.
If you used a static factory method, you could use setters - but this would require that your constructor be private, so really doesn't change anything beyond the constructor.
You could use an Initialize
method that relies on certain properties being set, but you then have to rely on that method being called. That means either a lot of plumbing to make sure the method's been called (e.g. each class method has to call if (!IsInitialized) throw ...
), or you just introduce fragility into your code.
Any alternative solution is less robust or more work than just putting absolutely-required data in your constructor - which is what a constructor parameter is for. My suggestion would be that you need to revisit your arbitrary requirement that constructor parameters be "reserved" in favour of something that makes more technical sense.