That said, the right answer is probably still to deliver it in C as requested, and walk away. The customer has spoken, and seems to broadly know what he is talking about (ie, it isn't a nontechnical customer who is asking how "cloudy" your solution is, it's a programmer), so... well... OK... if that's what you really want....
The client asked for C, they know the future, you do not. If, as the service provider, you recommend C# and detail all the advantages and the client still wants C you go with C. Simple as that.
Saying C# is beautiful and powerful is irrelevant. The task can be done in any number of languages but the client asked for C, go with C.
You talk to your manager and recommend something but the buck stops with him and you do what he says. He is essentially in charge.
If you can't accept this then leave, you have no respect for then, why would you want to work with them. If you need the money they get on with it.
Programmers need to be more professional. As a professional you give your professional opinion but that isn't gospel. You note your protest and then get on with the job you are paid to do to the best of your ability.
BTW I am a programmer. I've been junior, lead and manager so I've seen it from all sides.
Progress is actually made by teams of people working together for a common goal.
If your boss isn't paying you to look at the new technology, do it on your own time and in your own projects. If you want, you can come back afterwards and say "based on my personal experience, we can save time/money by switching to X" and give them the opportunity to try it out - or to overrule you.