我正在尝试执行以下操作:

foreach (var item in Assembly.GetExecutingAssembly()
                             .GetTypes()
                             .Where(i => i.GetInterfaces()
                             .Contains(typeof(ITabItem))))
{
    container.RegisterType<ITabItem, item>(nameof(item));
}


但是我在item方法中的RegisterType上收到此错误:

错误CS0118“项目”是变量,但其用法类似于类型

我知道我要传递一个对象类型,但是如何解决呢?

编辑:这是一种非动态方式。

container.RegisterType<ITabItem, AdminViewModel>(nameof(AdminViewModel));
container.RegisterType<ITabItem, OwnerViewModel>(nameof(OwnerViewModel));

最佳答案

您需要使用非通用RegisterType,它可能看起来像这样:

container.RegisterType(typeof(ITabItem), item, item.FullName);

09-05 22:32