0
내가 지금처럼 내 주요 객체로 내 사용자 개체를 삽입 할
:까지 때까지를 주입 사용자 정의 개체
public Principal(User user, IUserPermissions userPermissions)
{
/* user is the correct instance, that I passed via ConstructorArgument */
}
까지
kernel.Get<IPrincipal>(new ConstructorArgument("user", user));
이 IPrincipal 생성자의 구체적인 구현 여기에는 문제가 없습니다. 사용자 개체가 잘 전달됩니다.
그러나 IUserPermissions는이 바로 객체를 수신하지 않습니다. 대신 ninject가 User의 새 인스턴스를 만듭니다. 여기 IUserPermissions 생성자의 구체적인 구현 :
public UserPermissions(User user, IDomainRoleValidator domainRoleValidator)
{
/* user is a fresh instance, **not** the one I passed via ConstructorArgument */
}
가 어떻게이 'SETUSER'와 같은 새로운 방법을 추가 할 필요없이 작업 할 수 있습니까?
InRequestScope가 삭제되었습니다 (이유가 있다고 생각합니다). 그리고 InThreadScope는 여기에 적용되지 않습니다. – Sam7
'InRequestScope'는'Ninject.Web.Common.dll'의 일부입니다. 'Ninject.dll'의 일부가 아닙니다. 어느 쪽이든 그 대답은 같습니다. 범위가 잘못되었습니다. 기본 범위는'InTransientScope'입니다. 이것은'kernel.Get'를 호출 할 때 새로운 인스턴스입니다. –
나는 실제로 스코프없이 그것을하는 것을 선호 할 것이다. 내가 그 전화를 얻기위한 범위를 정의 할 수 없다면 ... – Sam7