A rough estimate can be done, and tracking the used memory via profilig should also be possible. But the JIT has the freedom of setting up the layout of the type as it fits best, which may also depend on framework version, machine configuration (especially 32bit vs. 64bit), framework provider (MS, Mono, GNU.NET etc.) etc.
Computing it in advance will be similar to this:
References are 32bit or 64bit depending on platform
A class instance has an internal reference to the type information (which includes VTable etc.), plus a reference for each reference type contained (including strings or arrays), plus the memory used by any structs (these may be layouted so that access is efficient, in fact leaving some memory unused).
So the question is also, do you want to get the memory used by the class or by the class and the associated data (like strings, arrays, lists, dictionatries etc. in fields)?