Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 0b6ccb2

Browse files
committed
Make menu handler lists readonly
1 parent 01b72b0 commit 0b6ccb2

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/GitHub.Exports/Services/IMenuProvider.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ public interface IMenuProvider
1212
/// <summary>
1313
/// Registered via AddTopLevelMenuItem
1414
/// </summary>
15-
IEnumerable<IMenuHandler> Menus { get; set; }
15+
IReadOnlyCollection<IMenuHandler> Menus { get; }
1616

1717
/// <summary>
1818
/// Registered via AddDynamicMenuItem
1919
/// </summary>
20-
IEnumerable<IDynamicMenuHandler> DynamicMenus { get; set; }
20+
IReadOnlyCollection<IDynamicMenuHandler> DynamicMenus { get; }
2121
}
2222
}
+11-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
using System.Collections.Generic;
2+
using System.Collections.ObjectModel;
23
using System.ComponentModel.Composition;
4+
using System.Linq;
35

46
namespace GitHub.VisualStudio.Menus
57
{
68
[Export(typeof(IMenuProvider))]
79
[PartCreationPolicy(CreationPolicy.Shared)]
810
public class MenuProvider : IMenuProvider
911
{
10-
[ImportMany]
11-
public IEnumerable<IMenuHandler> Menus { get; set; }
12+
public IReadOnlyCollection<IMenuHandler> Menus { get; private set; }
1213

13-
[ImportMany]
14-
public IEnumerable<IDynamicMenuHandler> DynamicMenus { get; set; }
14+
public IReadOnlyCollection<IDynamicMenuHandler> DynamicMenus { get; private set; }
15+
16+
[ImportingConstructor]
17+
public MenuProvider([ImportMany] IEnumerable<IMenuHandler> menus, [ImportMany] IEnumerable<IDynamicMenuHandler> dynamicMenus)
18+
{
19+
Menus = new ReadOnlyCollection<IMenuHandler>(menus.ToList());
20+
DynamicMenus = new ReadOnlyCollection<IDynamicMenuHandler>(dynamicMenus.ToList());
21+
}
1522
}
1623
}

0 commit comments

Comments
 (0)