There is a subtle oddity to what you ask. Let me repeat what you stated:
1) There are several versions of the same service in your organization. Perhaps they are installed, as Bob suggested, / current / api ... / v1 / api ... / v2 / api ... etc. Or maybe another template.
2) You want one C # library to know each of the different versions.
This is the second part, which is strange. Typically, the client library is for a specific version only. The responsibility of the server must be to ensure that new versions of the service are either backward compatible with older versions or isolated on the new URL.
Ask yourself: if you were to get together and create this library that knew several versions of the same service, what would it look like for the consumers of your library? Should they specifically tell you which version to use? This is not a concern that I would expect to know about.
var client = new MyClient(); client.DoSomething();
source share