2012-12-02 3 views
2

J'ai une application ASP.NET MVC et j'utilise MEF pour importer mes interfaces. Le problème est que mon interface IVotesRepository est nulle lorsqu'elle est transmise au constructeur.Interface NULL dans le constructeur

Voici le code de mon contrôleur:

public class VotesController : BaseController 
{ 
    // 
    // GET: /Votes/ 
    IVotesRepository VotesRepository; 
    IAccountRepository accountRepository; 

    public VotesController(IVotesRepository votesRepo, IAccountRepository accountRepo) 
    { 
     VotesRepository = votesRepo; 
     accountRepository = accountRepo; 
    } 

Et voici l'interface et le dépôt lui-même:

public interface IVotesRepository 
{ 
    void SaveVotes(int TeamId, int GameId, int UserId); 

    bool CheckIfUserHaveVoted(int UserId, int GameId); 
} 

[Export(typeof(IVotesRepository))] 
public class VotesRepository : IVotesRepository 
{ 
    ... 
} 

Pourquoi est nulle instance IVotesRepository?

EDIT:

Trace de la pile:

Object reference not set to an instance of an object at SocialSport.Controllers.VotesController.SaveVotes(Nullable`1 TeamId, Nullable`1 GameId) in C:\...\Visual Studio 2010\Projects\SocialSport\Implementation\Source\SocialSportWeb\Controllers\VotesController.cs:line 29 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
+0

Bienvenue sur le site. Si vous devez faire une surbrillance en ligne, utilisez une paire de guillemets ('). Sinon, utilisez le bouton de formatage du code (la paire d'accolades dans l'éditeur) pour les blocs de code, comme vos classes et interfaces. –

+0

Je ne vois pas le ['ImportingConstructorAttribute'] (http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.importingconstructorattribute.aspx) sur le constructeur. Voir [ici] (http://stackoverflow.com/q/2008133/50776) pour savoir comment le faire correctement. – casperOne

+0

Merci pour l'aide. –

Répondre

-1

il semble que quelque part dans mon application, j'ai non enregistré cette interface en quelque sorte, donc je l'ai fait une autre interface et maintenant il travaille, désolé si elle est une solution sale, mais je n'ai pas eu le temps de faire les corrections appropriées, merci pour votre aide.

Questions connexes