저는 Microsoft Bot Framework를 사용하여 Bot를 만듭니다. 나는이 같은 MessageController에 POST에 대화 상자를 호출하고 있습니다 :IDialog에서 ILifetimeScope 사용
using (var scope = DialogModule.BeginLifetimeScope(_scope, activity))
{
var postToBot = scope.Resolve<IPostToBot>();
await postToBot.PostAsync(activity, cancellationToken);
}
내 대화 상자 클래스의 내부에서, 나는이 범위를 사용하는 공장을 사용해야합니다. 문제는이 범위를 Dialog 클래스 안에 넣는 것입니다.
ILifetimeScope를 생성자에 삽입하면 처음으로 작동합니다. 그러나이 유형은 직렬화 할 수 없습니다 (BotFramework에서 오류가 발생 함). 그래서 이것을 비 직렬화로 표시해야하지만이 범위를 다시 얻을 수있는 방법이 없습니다. 나는 기본 WebApi DependencyResolver를 사용하려고 시도하지만 키순 서비스를 해결하는 AutoFac 기능이 필요하다. DependencyResolver에서 ILifetimeScope를 해결하면 "루트"범위를 반환하고 중첩 된 범위 (메시지 컨트롤러에서 사용되는 것과 동일한)가 필요합니다.
가변적 인 범위에서 내 범위를 유지하면서 해결했지만 우아한 것은 아닙니다.
using (var scope = DialogModule.BeginLifetimeScope(_scope, activity))
{
IocModule.CurrentScope = scope;
var postToBot = scope.Resolve<IPostToBot>();
await postToBot.PostAsync(activity, cancellationToken);
}
다른 아이디어가 있습니까?
고맙습니다 ... 나는이 사이트를 봇 샘플로 알지 못했습니다 ... –
걱정할 필요가 없습니다. 그것은 아주 새로운 며칠 전 발표되었습니다 : https://blog.botframework.com/2016/09/26/new-bot-builder-sdk-samples-released/ –