Как я могу внедрить IPrincipal с помощью TinyIoC?

Эта строка:

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

выдает следующее исключение:

Невозможно зарегистрировать тип System.Security.Principal.IPrincipal — абстрактные классы или интерфейсы не являются допустимыми типами реализации для SingletonFactory.

Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: Tss.Rhnncp.DietPlanner.Bootstap.TinyIoCRegistrationTypeException: невозможно зарегистрировать тип System.Security.Principal.IPrincipal — абстрактные классы или интерфейсы не являются допустимыми типами реализации для SingletonFactory.

Ошибка источника:

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

person user953710    schedule 15.08.2014    source источник


Ответы (1)


Я не знаком с TinyIoc, но полагаю, вам понадобится что-то вроде этого:

container.Register<IPrincipal>(() => HttpContext.Current.User);
person Steven    schedule 15.08.2014
comment
Привет Стивен, спасибо за ваш ответ. Я пробовал это и получил сообщение об ошибке, указывающее, что «лямбда-выражение типа аргумента не может быть назначено типу параметра IPrincipal» - person user953710; 21.08.2014