J'essaie d'implémenter DI en utilisant Autofac IOC dans la fonction Azure. J'ai besoin de construire le conteneur, mais je ne sais pas où placer le code pour le construire.
Je pense que pour le moment il faudrait faire quelque chose de laid comme:
public static string MyAwesomeFunction(string message)
{
if (MyService == null)
{
var instantiator = Initialize();
MyService = instantiator.Resolve<IService>();
}
return MyService.Hello(message);
}
private static IService MyService = null;
private static IContainer Initialize()
{
// Do your IoC magic here
}
J'ai écrit une entrée de blog pour l'injection de dépendance avec Autofac dans Azure Functions. Jetez un coup d’œil ici: Injection de dépendance de fonction Azure avec AutoFac: fonctions de fonction automatique
Il suit une approche similaire à celle de Boris Wilhelms . Une autre implémentation basée sur l’approche de Boris est disponible sur github: injection de dépendance autofac
-- mettre à jour ---
Avec Azure Function v2, il est possible de créer des packages de nuget basés sur la norme .net. Consultez Injection de dépendance Azure Functions avec Autofac: package de nuget de fonctions
Tandis qu'Azure Functions ne prend pas en charge l'interface ID immédiatement, il est possible de l'ajouter via la nouvelle API Extension. Vous pouvez inscrire le conteneur à l'aide d'une implémentation IExtensionConfigProvider. Vous trouverez un exemple complet de solution DI dans Azure ici https://blog.wille-zone.de/post/Azure-functions-proper-dependency-injection/ .
Azure Functions ne prend pas encore en charge l'injection de dépendance. Suivez ce numéro pour la demande de fonctionnalité https://github.com/Azure/Azure-Functions/issues/299
Vous pouvez le faire en utilisant un attribut personnalisé [inject]. Voir exemple ici https://blog.wille-zone.de/post/Azure-functions-proper-dependency-injection/