This is an older one, but since it does not have an accepted answer:
GRASS GIS is divided into modules. Each module is a command line program which can by invoked in many ways. Inside GRASS itself, it is through the system command line or GUI (with our without auto-generated GUI dialog).
Most of the GRASS functionality is exposed through modules. There is some lower level functionality available through C or Python interfaces. This is usually used to create other modules.
Since the modules are command line programs, they can be invoked from (almost) any programming language. Usually people write scripts in Python but you can use also C/C++ or Java. See for example JGrassTools (https://code.google.com/p/jgrasstools/, http://moovida.github.io/jgrasstools/). I guess that the similar things apply will to C#.
Anyway, there are some convenient functions in GRASS Python API for module invocation which will be not accessible to you, so I would still consider combining with Python or switching to another language and framework if possible. Look for example to QGIS Processing or QGIS GRASS plugin how they solve the GRASS calls. You can of course have a look to GRASS itself. If open source license (GPL in these cases) is OK for you, you could save yourself some work with having the GIS-related things readily available.
In conclusion, I don't think that there ever will be any .NET binding for GRASS GIS. You can of course try to create one. But I personally don't have a desire to work on something which would be tight to some vendor and system specific platform. In any case, there are some ways available.