使用 Reflection 的 Unity 寄存器类型
Unity register types using Reflection
我正在尝试执行以下操作:
foreach (var item in Assembly.GetExecutingAssembly()
.GetTypes()
.Where(i => i.GetInterfaces()
.Contains(typeof(ITabItem))))
{
container.RegisterType<ITabItem, item>(nameof(item));
}
但我在 RegisterType
方法中的 item
上收到此错误:
错误 CS0118 'item' 是一个变量,但像类型一样使用
我知道我正在传递一个对象类型,但我该如何解决这个问题?
编辑:这是有效的非动态方式。
container.RegisterType<ITabItem, AdminViewModel>(nameof(AdminViewModel));
container.RegisterType<ITabItem, OwnerViewModel>(nameof(OwnerViewModel));
您需要使用非泛型 RegisterType
,它可能看起来像这样:
container.RegisterType(typeof(ITabItem), item, item.FullName);
我正在尝试执行以下操作:
foreach (var item in Assembly.GetExecutingAssembly()
.GetTypes()
.Where(i => i.GetInterfaces()
.Contains(typeof(ITabItem))))
{
container.RegisterType<ITabItem, item>(nameof(item));
}
但我在 RegisterType
方法中的 item
上收到此错误:
错误 CS0118 'item' 是一个变量,但像类型一样使用
我知道我正在传递一个对象类型,但我该如何解决这个问题?
编辑:这是有效的非动态方式。
container.RegisterType<ITabItem, AdminViewModel>(nameof(AdminViewModel));
container.RegisterType<ITabItem, OwnerViewModel>(nameof(OwnerViewModel));
您需要使用非泛型 RegisterType
,它可能看起来像这样:
container.RegisterType(typeof(ITabItem), item, item.FullName);