C# command to get struct offset?
<p>Suppose I have a C# struct like this:</p>

<pre><code>[StructLayout(LayoutKind.Explicit)]
struct IMAGE_DOS_HEADER {
    [FieldOffset(60)] public int e_lfanew;
}
</code></pre>

<p>Now suppose I read in data from a file, like this:</p>

<pre><code>byte[] data = new byte[4096];
FileStream f = new FileInfo(filename).Open(FileMode.Open, FileAccess.Read);
int n = f.Read(data, 0, 4096);
</code></pre>

<p>Now I want to test <code>n</code> to make sure I've read enough bytes to get the value of <code>e_lfanew</code>. Is there any way I can get the value 60 (the FieldOffset) without retyping it? I'm looking for something like this:</p>

<pre><code>if (n &gt;= offsetof(IMAGE_DOS_HEADER.e_lfanew) + sizeof(int)) {
    ...
}
</code></pre>

<p>Is there any such command? In my actual code, I have to make several of these tests, and it seems tedious and error-prone to type the numbers in by hand, either by adding up the prior fields in the struct or by copying values out of the FieldOffset attributes. Is there a better way?</p>
