It is possible to write a provider using C#, the dotnet tests run against a C# provider:
https://github.com/pulumi/pulumi-dotnet/tree/main/integration_tests/testprovider
But as Piers said it's currently tagged experimental. I don't expect it will change
much but we might move/rename things slightly in minor releases.
There's also no support for auto-generating the code from a schema, or vice-versa unlike the
Go provider which will automatically build the schema from the Go code, so you need to do a lot manually.