【发布时间】:2015-05-18 22:25:16
【问题描述】:
我正在使用 Unity 来实例化我的 MenuRepository 实例。尝试这样做时出现以下错误..
类型列表`1 有多个长度为 1 的构造函数。无法消除歧义。
我尝试了以下注册,但没有运气..
container.RegisterType<IMenuRepository, MenuRepository>(
new PerThreadLifetimeManager(),
new InjectionConstructor(typeof(IMonopolyEntitiesDbContext),
typeof(List<MenuLink>)));
这是我的注册信息
container.RegisterType<MenuLink>();
container.RegisterType <List<MenuLink>>();
container.RegisterType<IMonopolyEntitiesDbContext, MonopolyEntities>(
new PerThreadLifetimeManager());
container.RegisterType<IMenuRepository, MenuRepository>(
new PerThreadLifetimeManager(),
new InjectionConstructor(typeof(IMonopolyEntitiesDbContext), typeof(List<MenuLink>)));
MenuRepository
public class MenuRepository : IMenuRepository
{
IMonopolyEntitiesDbContext _dbContext;
List<MenuLink> _allsubMenus;
public MenuRepository(IMonopolyEntitiesDbContext context, List<MenuLink> allsubMenus)
{
_dbContext = context;
_allsubMenus = allsubMenus;
}
}
【问题讨论】:
-
List 有多个构造函数。 Unity 找不到应该使用哪个……您需要向 unity 提供更多信息。但我建议您创建一个服务来创建列表并将此服务注入您的存储库。
-
确实如此,Unity 需要知道您的意思是
List<T>(sequence)还是List<T>(length)。 -
List<MenuLink>包含什么?这是在应用程序期间不会更改的MenuItem对象的固定列表吗?或者是每次请求都从数据库中请求的数据?你能详细说明一下吗? -
嗨,阿布,我已经为你写了一个很长的答案。不过我还没有发布它,因为我缺少一些能够回答这个问题的基本信息。如果您能回答我之前关于
List<MenuLink>的问题,我可以发布我的答案并帮助您解决问题。 -
抱歉回复晚了。 List
标签: c# unity-container