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)
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. –
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
Merci pour l'aide. –