public T[,] ReadArray2 <T>(string Key, T[,] Default) where T : IArchiveInfo, new() { if (!CacheList_.ContainsKey(Key)) { return(Default); } if (CacheList_[Key] is object[,] ArrayObj) { var Width = ArrayObj.GetLength(0); var Height = ArrayObj.GetLength(1); var OutputArray = new T[Width, Height]; for (var X = 0; X < Width; ++X) { for (var Y = 0; Y < Height; ++Y) { OutputArray[X, Y] = (T)ArrayObj[X, Y]; } } return(OutputArray); } LLogger.LWarning($"archive type error : {Key} - {typeof(T)}"); return(Default); }
public void VisualizeGraphWithArray() { var visualizer = new ObjectGraphVisualizer(); IData data; var root = new ArrayObj(); root.array = new LeafObj[] { new LeafObj(), new LeafObj() }; var dot = visualizer.Visualize(root, out data); Assert.That(dot, Does.Contain( "1 [ label=\"YetiCommon.Tests.Util.ArrayObj\" id=\"dark googlegreen\" ];")); Assert.That(dot, Does.Contain( "2 [ label=\"YetiCommon.Tests.Util.LeafObj\" id=\"dark googlered\" ];")); Assert.That(dot, Does.Contain( "3 [ label=\"YetiCommon.Tests.Util.LeafObj\" id=\"dark googlered\" ];")); Assert.That(dot, Does.Contain("1 -> 2 [ label=\"array[0]\" ];")); Assert.That(dot, Does.Contain("1 -> 3 [ label=\"array[1]\" ];")); Assert.That(data.RootObject, Is.EqualTo(root)); Assert.That(data.InternalNodes, Is.EquivalentTo(new object[] { root })); Assert.That(data.TruncatedNodes, Is.Empty); Assert.That(data.LeafNodes, Is.EquivalentTo(new object[] { root.array[0], root.array[1] })); }
public override string ToString() { int id = RuntimeHelpers.GetHashCode(ArrayObj); StringBuilder sb = new StringBuilder(); sb.Append("array"); sb.Append(id); sb.Append("<"); sb.Append(ArrayObj.GetType()); sb.Append(">["); sb.Append(Indices == null ? "?" : string.Join(",", Indices)); sb.Append("]"); return(sb.ToString()); }
public override int GetHashCode() { return(ArrayObj.GetHashCode() ^ (Indices == null ? 0 : Indices.GetSequenceHashCode())); }