у меня смутное подозрение, что вы пытаетесь все усложнить...
1 -
CGI - три буквы, которые можно вспоминать, только когда на сервер уже отправлен какой то запрос
2 - все таинство, как возникает запрос к серверу, при заполнении формы, происходит на клиентской стороне, в браузере, ключевые слова - html, js, фронтэнд фреймфорки (а их сейчас как собак не резаных).. но C# туда впихнуть пока не реально.. есть кросскомпиляторы, но это не отменяет необходимости хорошего понимания, всего что происходит в браузере.. возможно, в будущем, будет и кросскомплер в webassembly
3 - после того как разберетесь с фронтэндом, CGI можно писать на любом языке.. но если вы опираетесь на стек .NET - попробуйте хотя бы, для начала, осилить asp.net webforms.. потом asp.net mvc (там очень, очень много всего уже решено для вашего удобства.. а вы типа в каменный век хотите)
ps
если с фронэндом вы справитесь - CGI на C# - это просто консольное приложение, а вот как его цеплять в IIS/Apache.. как парсить ввод, как генерить html-ный вывод... все таки - попробуйте asp.net
pps
стандартный ввод это Console.ReadLine(), стандартный вывод - Console.WriteLine() - вот вам все что делает приложение пригодным к CGI... все остальное надо понимать в голове и кодить ручками