private static IEnumerable <MemoryTracker.ChildReference> GetAllReferencedClassesFromClassOrStruct(object current, IEnumerable <FieldInfo> fields, object parent, string currentPath) { foreach (FieldInfo field in fields) { if (!field.FieldType.IsPrimitive) { object referenced = null; referenced = field.GetValue(current); if (referenced != null) { foreach (MemoryTracker.ChildReference child in MemoryTracker.DistillChildReferencesFromObject(referenced, parent, currentPath + field.Name)) { yield return(child); } } } } if (current != null && current is ICollection) { MemoryTracker.foundCollections.Add(new WeakReference(current)); foreach (object entry in (current as IEnumerable)) { if (entry != null && !entry.GetType().IsPrimitive) { foreach (MemoryTracker.ChildReference child2 in MemoryTracker.DistillChildReferencesFromObject(entry, parent, currentPath + "[]")) { yield return(child2); } } } } }
private static IEnumerable <ChildReference> GetAllReferencedClassesFromClassOrStruct(object current, IEnumerable <FieldInfo> fields, object parent, string currentPath) { foreach (FieldInfo field in fields) { if (!field.FieldType.IsPrimitive) { object referenced = field.GetValue(current); if (referenced != null) { using (IEnumerator <ChildReference> enumerator2 = MemoryTracker.DistillChildReferencesFromObject(referenced, parent, currentPath + field.Name).GetEnumerator()) { if (enumerator2.MoveNext()) { ChildReference child2 = enumerator2.Current; yield return(child2); /*Error: Unable to find new state assignment for yield return*/; } } } } } if (current != null && current is ICollection) { MemoryTracker.foundCollections.Add(new WeakReference(current)); IEnumerator enumerator3 = (current as IEnumerable).GetEnumerator(); try { while (enumerator3.MoveNext()) { object entry = enumerator3.Current; if (entry != null && !entry.GetType().IsPrimitive) { using (IEnumerator <ChildReference> enumerator4 = MemoryTracker.DistillChildReferencesFromObject(entry, parent, currentPath + "[]").GetEnumerator()) { if (enumerator4.MoveNext()) { ChildReference child = enumerator4.Current; yield return(child); /*Error: Unable to find new state assignment for yield return*/; } } } } } finally { IDisposable disposable; IDisposable disposable2 = disposable = (enumerator3 as IDisposable); if (disposable != null) { disposable2.Dispose(); } } } yield break; IL_02f3: /*Error near IL_02f4: Unexpected return in MoveNext()*/; }
private static IEnumerable <MemoryTracker.ChildReference> GetAllReferencedClassesFromClassOrStruct(object current, IEnumerable <FieldInfo> fields, object parent, string currentPath) { foreach (FieldInfo field in fields) { if (!field.FieldType.IsPrimitive) { object referenced = null; referenced = field.GetValue(current); if (referenced != null) { foreach (MemoryTracker.ChildReference child in MemoryTracker.DistillChildReferencesFromObject(referenced, parent, currentPath + field.Name)) { yield return(child); } } } } if (current != null && current is ICollection) { MemoryTracker.foundCollections.Add(new WeakReference(current)); IEnumerator enumerator3 = (current as IEnumerable).GetEnumerator(); try { while (enumerator3.MoveNext()) { object entry = enumerator3.Current; if (entry != null && !entry.GetType().IsPrimitive) { foreach (MemoryTracker.ChildReference child2 in MemoryTracker.DistillChildReferencesFromObject(entry, parent, currentPath + "[]")) { yield return(child2); } } } } finally { IDisposable disposable; if ((disposable = (enumerator3 as IDisposable)) != null) { disposable.Dispose(); } } } yield break; }