public static int OffsetOf(Type t, string name, OffsetOfType type, bool isProperty = false) { if (isProperty) { name = UniqueMember.BackingField.GetName(name); } switch (type) { case OffsetOfType.Marshal: return((int)Marshal.OffsetOf(t, name)); case OffsetOfType.Managed: var mt = t.AsMetaType(); return(mt[name].Offset); default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
public static int OffsetOf <T>(string name, OffsetOfType type, bool isProperty = false) => OffsetOf(typeof(T), name, type, isProperty);