Хотя это не совсем ответ на поставленный вопрос, но если вам нужно или вы можете принять конечный результат в виде строки, вы также можете использовать
string s = Char.ConvertFromUtf32(56)
, который при необходимости даст вам суррогатные пары utf16, защищая вас, если вы находитесь за пределами BMP .