/// <summary>Pastes nodes from the clipboard.</summary> /// <param name="templateProject">The project to resolve class references.</param> /// <param name="logger">The logger.</param> /// <returns>A list of <see cref="ClassNode"/> and <see cref="BaseNode"/>. If no data was present, both lists are empty.</returns> public static Tuple <List <ClassNode>, List <BaseNode> > Paste(ReClassNetProject templateProject, ILogger logger) { Contract.Requires(templateProject != null); Contract.Requires(logger != null); Contract.Ensures(Contract.Result <Tuple <List <ClassNode>, List <BaseNode> > >() != null); if (ContainsNodes && Clipboard.GetData(ClipboardFormat) is byte[] data) { using var ms = new MemoryStream(data); return(ReClassNetFile.DeserializeNodesFromStream(ms, templateProject, logger)); } return(Tuple.Create(new List <ClassNode>(), new List <BaseNode>())); }
/// <summary>Pastes nodes from the clipboard.</summary> /// <param name="templateProject">The project to resolve class references.</param> /// <param name="logger">The logger.</param> /// <returns>A list of <see cref="ClassNode"/> and <see cref="BaseNode"/>. If no data was present, both lists are empty.</returns> public static Tuple <List <ClassNode>, List <BaseNode> > Paste(ReClassNetProject templateProject, ILogger logger) { Contract.Requires(templateProject != null); Contract.Requires(logger != null); Contract.Ensures(Contract.Result <Tuple <List <ClassNode>, List <BaseNode> > >() != null); var classes = new List <ClassNode>(); var nodes = new List <BaseNode>(); if (ContainsNodes) { if (Clipboard.GetData(ClipboardFormat) is byte[] data) { using (var ms = new MemoryStream(data)) { var result = ReClassNetFile.DeserializeNodesFromStream(ms, templateProject, logger); classes.AddRange(result.Item1); nodes.AddRange(result.Item2); } } } return(Tuple.Create(classes, nodes)); }