public static int OffsetOf(FieldInfo fieldInfo) { if (fieldInfo is null) { throw new ArgumentNullException(nameof(fieldInfo)); } if (fieldInfo.IsLiteral) { throw new ArgumentException("Unable get offset of a const field.", nameof(fieldInfo)); } if (VersionDifferences.UseInternalMethod && OffsetHelper.OffsetOfByFieldDescIsAvailable) { return(OffsetHelper.GetOffsetByFieldDesc(fieldInfo)); } if (!fieldInfo.IsStatic && OffsetHelper.GetOffsetByIndexOfInstance(fieldInfo) is int offset && offset >= 0) { return(offset); } if (VersionDifferences.IsSupportEmit) { return(OffsetHelper.GetOffsetByEmit(fieldInfo)); } throw new PlatformNotSupportedException(); }
public static int OffsetOf(FieldInfo fieldInfo) { if (fieldInfo == null) { throw new ArgumentNullException(nameof(fieldInfo)); } if (fieldInfo.IsLiteral) { throw new ArgumentException("Unable get offset of a const field.", nameof(fieldInfo)); } if (OffsetHelper.OffsetOfByHandleIsAvailable) { return(OffsetHelper.OffsetOfByHandle(fieldInfo)); } return(OffsetHelper.GetOffsetByDynamic(fieldInfo)); }