2010-11-28 21 views
1

J'utilise un structuremap dans mon projet et assez souvent je suis coincé dans une méthode d'extension où j'ai besoin d'une instance d'un objet.Conseil de conception de code

la première méthode consiste à envoyer mon référentiel dans la méthode d'extension et l'autre méthode consiste à avoir un référentiel statique et à l'initialiser dans ma méthode comme ceci.

public static class SomeExtensions { 
    static IRepository _repository; 
    public static string ExtensionsMethod1(this HtmlHelper helper) { 
     _repository = ObjectFactory.GetIntance<IRepository>(); 
     // do stuff 
    } 
} 

Quoi de mieux dans ce scénario?

Répondre

3

Pas vraiment répondre à la question, juste ce bout de code spécifique:

Vous ne devriez pas utiliser un référentiel dans vos méthodes d'aide HTML personnalisés ASP.NET MVC. C'est la responsabilité du contrôleur de manipuler le modèle. Les méthodes d'assistance html permettent de générer de petits fragments de code HTML. En ce qui concerne le cas le plus général, les méthodes d'extension ne sont que du sucre syntaxique pour les méthodes statiques simples. Vous ne pouvez donc pas y injecter de dépendances.

+0

Dans ce cas précis, je suis en train de rendre un menu de navigation, donc j'ai besoin d'aller chercher tous les enfants, descendants et ainsi de suite pour chaque objet, peut-être plus approprié d'envoyer un objet hiérarchique complet à la vue? – Marcus

+1

@Marcus: Oui, créez le modèle de vue dans le contrôleur, ne disposez pas de helpers html référençant des référentiels. – cspolton