C# 构造函数中的Null接口

C# 构造函数中的Null接口,c#,asp.net-mvc,interface,mef,C#,Asp.net Mvc,Interface,Mef,我有一个ASP.NETMVC应用程序,我正在使用MEF导入我的接口。问题是我的IVotesRepository接口在传递给构造函数时为空 以下是我的控制器的代码: public class VotesController : BaseController { // // GET: /Votes/ IVotesRepository VotesRepository; IAccountRepository accountRepository; public V

我有一个ASP.NETMVC应用程序,我正在使用MEF导入我的接口。问题是我的
IVotesRepository
接口在传递给构造函数时为空

以下是我的控制器的代码:

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

    public VotesController(IVotesRepository votesRepo, IAccountRepository accountRepo)
    {
        VotesRepository = votesRepo;
        accountRepository = accountRepo;
    }
下面是界面和存储库本身:

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

    bool CheckIfUserHaveVoted(int UserId, int GameId);
}

[Export(typeof(IVotesRepository))]
public class VotesRepository : IVotesRepository
{
   ...
}
为什么
IVotesRepository
实例为空

编辑:

堆栈跟踪:

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)
对象引用未设置为C:\…\Visual Studio 2010\Projects\SocialPort\Implementation\Source\SocialPortWeb\Controllers\VotesController.cs中的SocialSport.Controllers.SaveVoices(可为null的'1 TeamId,可为null的'1 GameId)中的对象实例:第29行
在lambda_方法中(闭包、控制器基、对象[])
位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass15.b_uuu12()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)

我似乎在我的应用程序中的某个地方以某种方式注销了该接口,因此我制作了另一个接口,现在它可以工作了,如果这是一个肮脏的修复,很抱歉,但我没有时间进行适当的更正,感谢您的帮助。

我似乎在我的应用程序中的某个地方以某种方式注销了该接口,因此,我制作了另一个界面,现在它可以正常工作了,如果这是一个肮脏的修复,很抱歉,但我没有时间进行适当的更正,感谢您的帮助。

欢迎访问该网站。如果需要进行内联高亮显示,请使用一对反勾(`)。否则,使用代码格式化按钮(编辑器中的一对大括号)处理代码块,比如类和接口。请参阅如何正确操作。@casperOne我已经尝试了
[ImportConstructor]
属性,但仍然不起作用,有趣的是,它以前可以工作,在我的其他控制器中,我有相同的代码,但其他接口可以工作,这是唯一不起作用的。欢迎访问该站点。如果需要进行内联高亮显示,请使用一对反勾(`)。否则,使用代码格式化按钮(编辑器中的一对大括号)处理代码块,比如类和接口。请参阅如何正确操作。@casperOne我已经尝试了
[ImportConstructor]
属性,但仍然不起作用,有趣的是,它以前一直起作用,在我的其他控制器中,我有相同的代码,但有其他接口,它们也起作用,这一个是唯一不起作用的。