提交 f24b4dab 编写于 作者: C CyrusNajmabadi

Use immutable arrays in a couple of additional places.

上级 efff76e9
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Immutable;
using System.Linq;
using Microsoft.CodeAnalysis.NavigateTo;
using Microsoft.CodeAnalysis.Navigation;
using Microsoft.CodeAnalysis.Text;
......@@ -83,7 +82,7 @@ internal class SerializableNavigableItem
{
public Glyph Glyph;
public TaggedText[] DisplayTaggedParts;
public ImmutableArray<TaggedText> DisplayTaggedParts;
public bool DisplayFileLocation;
......@@ -92,32 +91,27 @@ internal class SerializableNavigableItem
public DocumentId Document;
public TextSpan SourceSpan;
SerializableNavigableItem[] ChildItems;
ImmutableArray<SerializableNavigableItem> ChildItems;
public static SerializableNavigableItem Dehydrate(INavigableItem item)
{
return new SerializableNavigableItem
{
Glyph = item.Glyph,
DisplayTaggedParts = item.DisplayTaggedParts.ToArray(),
DisplayTaggedParts = item.DisplayTaggedParts,
DisplayFileLocation = item.DisplayFileLocation,
IsImplicitlyDeclared = item.IsImplicitlyDeclared,
Document = item.Document.Id,
SourceSpan = item.SourceSpan,
ChildItems = SerializableNavigableItem.Dehydrate(item.ChildItems)
ChildItems = item.ChildItems.SelectAsArray(Dehydrate)
};
}
private static SerializableNavigableItem[] Dehydrate(ImmutableArray<INavigableItem> childItems)
{
return childItems.Select(Dehydrate).ToArray();
}
public INavigableItem Rehydrate(Solution solution)
{
var childItems = ChildItems == null
? ImmutableArray<INavigableItem>.Empty
: ChildItems.Select(c => c.Rehydrate(solution)).ToImmutableArray();
: ChildItems.SelectAsArray(c => c.Rehydrate(solution));
return new NavigableItem(
Glyph, DisplayTaggedParts.ToImmutableArray(),
DisplayFileLocation, IsImplicitlyDeclared,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册