Ich bin verwirrt, wie die OWIN CreatePerOwinContext-Methode verwendet werden soll. Soweit ich sehen kann, ist es ein armer Mans-DI-Mechanismus. Aber ich verstehe nicht, wie ich es benutzen soll.Wie genau sollte IAppBuilder.CreatePerOwinContext <T> verwendet werden?
Wir können eine Art/Implementierung bei der Sequenz Startup registrieren wie:
app.CreatePerOwinContext<IUserService>(() => {
return new UserService() as IUserService;
});
Dann, wie wir später zu, dass lösen. Die Dokumentation besagt, dass sie über die Get-Methode abgerufen werden kann. Aber Get<T>
erwartet einen String-Parameter, der der Schlüssel zu diesem Eintrag in der Enviornment IDictionary ist? Wie kann ich den Schlüssel in diesem Fall wissen?
IUserService userService = context.Get<IUserService>(???);
Diese Antwort hat mich in die richtige Richtung geleitet. Wenn Sie jedoch das Element mit dem Schlüssel übernehmen möchten, müssen wir dem AssemblyQualifiedName mit 'AspNet.Identity.Owin:' vorangestellt werden, wodurch nur der vollständig qualifizierte Typname nicht funktioniert. – BuddhiP
Ich glaube nicht, dass das funktioniert. Ich habe die ctx.Environment-Eigenschaftsschlüssel untersucht, und es scheint, dass der hinzugefügte Schlüssel ein vollständig qualifizierter Assemblyname ist, indem ich in typeof (ApplicationDbContext) .AssemblyQualifiedName umschalte. Ich liebe es, wie das in der Dokumentierung nicht erwähnt wird. – enorl76