C# 如何显示通过Autofac动态加载的插件视图?

C# 如何显示通过Autofac动态加载的插件视图?,c#,autofac,C#,Autofac,我有几个独立的库,其中有一些导出主视图。 有一个带有TabControl的Shell,希望将所有视图加载到单独的选项卡中。 我可以从这个插件注册所有类型,但不知道如何显示所有这些主视图。 例如,我已从5个插件注册了5个视图,但如何将其传递到ShellView?如果您有接口 public interface ITabView { } 所有视图都实现 public class MyFirstView : UserControl, ITabView { .... } 你可以通过这样的方式注册它

我有几个独立的库,其中有一些导出主视图。 有一个带有TabControl的Shell,希望将所有视图加载到单独的选项卡中。 我可以从这个插件注册所有类型,但不知道如何显示所有这些主视图。
例如,我已从5个插件注册了5个视图,但如何将其传递到ShellView?

如果您有接口

public interface ITabView {
}
所有视图都实现

public class MyFirstView : UserControl, ITabView
{
  ....
}
你可以通过这样的方式注册它们

builder.RegisterType<MyFirstView>().As<ITabView>();
builder.RegisterType<MySecondView>().As<ITabView>();
builder.RegisterType().As();
builder.RegisterType().As();
然后,您可以通过向ShellView的构造函数中注入泛型IEnumerable来访问它们(即使它们在不同的程序集中注册)

public ShellView(IEnumerable<ITabView> tabViews)
{
  foreach (var view in tabViews)
  {
    ... Create a tab for each view, make the tab the parent of the view
    ... and add the tab to the TabControl
  }
}
publicshellview(IEnumerable选项卡视图)
{
foreach(选项卡视图中的变量视图)
{
…为每个视图创建一个选项卡,使该选项卡成为该视图的父视图
…并将选项卡添加到选项卡控件中
}
}