Question

ce poste , je dois obtenir une liste de tous les contrôleurs dans le dossier contrôleurs. Nous sommes en train d'expérimenter avec quelques trucs pour le moment. J'ai cherché par API, etc. sans chance. Je peux obtenir le régulateur de courant très bien, mais pas les autres malheureusement.

J'ai dû créer statiquement une liste des contrôleurs instanciés que je veux, comme ceci:

public static IList<AbstractHtmlPageController> _controllers = new List<AbstractHtmlPageController>
{
    new HomeController(),
    new UserController()
};

Ceci est évidemment pas une solution souhaitable.

Vive

Était-ce utile?

La solution

Vous pouvez essayer d'utiliser la réflexion (n'a pas testé):

public static IList<AbstractHtmlPageController> GetControllers()
{
    Assembly
        .GetExecutingAssembly()
        .GetTypes()
        .Where(t => 
            t != typeof(AbstractHtmlPageController) && 
            typeof(AbstractHtmlPageController).IsAssignableFrom(t)
        )
        .Select(t => (AbstractHtmlPageController)Activator.CreateInstance(t))
        .ToList();
}

L'utilité d'un tel procédé est très douteux. Les contrôleurs de l'instanciation comme celui-ci pour la durée de vie de l'application peut être dangereux. Les contrôleurs ne doivent pas être partagés. Laissez l'instanciation de vos contrôleurs au cadre d'injection de dépendance que vous utilisez. Leur durée de vie devrait être très courte, de préférence limitée à la demande de l'utilisateur courant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top