private void Load(BinaryReader reader)
{
//! NEVER EVER CHANGE THIS TO VAR.
// ReSharper disable once SuggestVarOrType_Elsewhere
M2Array<int>[] timelineEntries = ReadArrayOf(reader, ref mFileBlock.Timestamps);
mTimestamps = new int[timelineEntries.Length][];
for (var i = 0; i < timelineEntries.Length; ++i)
mTimestamps[i] = ReadArrayOf(reader, ref timelineEntries[i]);
var valuesEntries = ReadArrayOf(reader, ref mFileBlock.Values);
mValues = new TSource[valuesEntries.Length][];
for (var i = 0; i < valuesEntries.Length; ++i)
mValues[i] = ReadArrayOf(reader, ref valuesEntries[i]);
}
Petit « bug » sympa dans la détection de type de Roslyn
mFileBlock.Timestamps est de type
M2Array<M2Array<int>>.
C'est en gros une façon d'addresser les tableaux dans un fichier (merci bli
2), ça revient à
{ int count; int offset; }ReadArrayOf est signée comme telle:
T[] ReadArrayOf<T>(BinaryReader reader, ref M2Array<T> arr)Du coup, pour une raison quelconque, si je déclare
timelineEntries comme
var, Roslyn est incapable de déterminer que le type de
timelineEntries[i] est
M2Array<int>, et me sort donc une jolie erreur.
Dans le cas de
mFileBlock.Values, cette propriété est de type
M2Array<Vector3>, où le
Vector3 (soit
T) est partagé avec la déclaraction de la classe.
GoldenCrystal a été invité sur ce sujet.
Une idée?