【问题标题】:How can I inject IPrincipal using TinyIoC?如何使用 TinyIoC 注入 IPrincipal?
【发布时间】:2014-08-26 13:46:51
【问题描述】:

这一行:

container.Register<IPrincipal>().UsingConstructor(() => HttpContext.Current.User);

抛出以下异常:

无法注册类型 System.Security.Principal.IPrincipal - 抽象 类或接口不是有效的实现类型 单例工厂。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详情: Tss.Rhnncp.DietPlanner.Bootstap.TinyIoCRegistrationTypeException: 无法注册类型 System.Security.Principal.IPrincipal - 抽象 类或接口不是有效的实现类型 单例工厂。

来源错误:

Line 2663: throw new TinyIoCRegistrationTypeException(registerImplementation, "SingletonFactory");
Line 2664:
Line 2665:  if (!IsValidAssignment(registerType, registerImplementation))
Line 2666:      throw new TinyIoCRegistrationTypeException(registerImplementation, "SingletonFactory");
Line 2667:

【问题讨论】:

    标签: asp.net-mvc dependency-injection tinyioc


    【解决方案1】:

    我不熟悉 TinyIoc,但我希望您需要这样的东西:

    container.Register<IPrincipal>(() => HttpContext.Current.User);
    

    【讨论】:

    • 嗨史蒂文,感谢您的回复。我已经尝试过了,但出现错误,表明“参数类型“lambda 表达式”不可分配给参数类型“IPrincipal”'