C# 构造函数中的Null接口
我有一个ASP.NETMVC应用程序,我正在使用MEF导入我的接口。问题是我的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
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]
属性,但仍然不起作用,有趣的是,它以前一直起作用,在我的其他控制器中,我有相同的代码,但有其他接口,它们也起作用,这一个是唯一不起作用的。