Skip to content

Commit

Permalink
fix: create dedicated enumerable-like DumpEditable extension to corre…
Browse files Browse the repository at this point in the history
…ctly identify <T>
  • Loading branch information
rdavisau committed Apr 25, 2019
1 parent 1ca6f51 commit eb53c2c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/DumpEditable/EditableDumpContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace LINQPad.DumpEditable
{
public partial class EditableDumpContainer<T> : DumpContainer
{
private readonly T _obj;
private readonly object _obj;
private readonly bool _failSilently;
private readonly Dictionary<PropertyInfo, Action<T, object>> _changeHandlers
= new Dictionary<PropertyInfo, Action<T, object>>();
Expand Down Expand Up @@ -43,6 +43,24 @@ public void AddEditorRule(EditorRule rule)
}

public EditableDumpContainer(T obj, bool failSilently = false)
{
if (obj.GetType().GetArrayLikeElementType() != null)
throw new Exception("You must Dump enumerable-like objects with the DumpEnumerable overload.");

if (EditableDumpContainer.DefaultOptions.AutomaticallyKeepQueryRunning)
{
KeepRunningToken = Util.KeepRunning();
EditableDumpContainer.KeepRunningTokens.Add(KeepRunningToken);
}

_obj = obj;
_failSilently = failSilently;

SetContent();
}


public EditableDumpContainer(IEnumerable<T> obj, bool failSilently = false)
{
if (EditableDumpContainer.DefaultOptions.AutomaticallyKeepQueryRunning)
{
Expand Down Expand Up @@ -177,5 +195,8 @@ public static class EditableDumpContainer

public static EditableDumpContainer<T> For<T>(T obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);

public static EditableDumpContainer<T> ForEnumerable<T>(IEnumerable<T> obj, bool failSilently = false)
=> new EditableDumpContainer<T>(obj, failSilently);
}
}
11 changes: 11 additions & 0 deletions src/DumpEditable/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,16 @@ public static T DumpEditable<T>(this T obj, out EditableDumpContainer<T> contain

return obj;
}

public static IEnumerable<T> DumpEditableEnumerable<T>(this IEnumerable<T> obj, bool failSilently = false)
=> DumpEditableEnumerable<T>(obj, out _, failSilently);

public static IEnumerable<T> DumpEditableEnumerable<T>(this IEnumerable<T> obj, out EditableDumpContainer<T> container, bool failSilently = false)
{
container = new EditableDumpContainer<T>(obj, failSilently);
container.Dump();

return obj;
}
}
}

0 comments on commit eb53c2c

Please sign in to comment.