private unsafe static void TestStructureSizes(List <string> errors, Dictionary <string, int> nativeData) { Dictionary <string, int> managedData = NativeStructures.ToDictionary(x => x.Name, x => Marshal.SizeOf(x)); var difference = nativeData.Keys.Except(managedData.Keys); if (difference.Any()) { errors.Add("Structure lists are different: " + string.Join(", ", difference) + "."); return; } foreach (string key in nativeData.Keys) { int nativeSize = nativeData[key]; int managedSize = managedData[key]; if (nativeSize != managedSize) { errors.Add("Structure " + key + " declarations are different. Expected size is " + nativeSize.ToString(CultureInfo.InvariantCulture) + " actual size is " + managedSize.ToString(CultureInfo.InvariantCulture) + "."); } } }