C# ASP.NET MVC System.ArgumentNullException:值不能为null。参数名称:源

C# ASP.NET MVC System.ArgumentNullException:值不能为null。参数名称:源,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,正在做我的项目,我想不出还有什么。在这一部分中,我不能使用nullIPagedList products=null,但当我创建IPagedList products=new IPagedList时,它会说我也不能这样做。您不能初始化接口。您需要初始化实现接口的类 如果你有: public interface IPuppy { void Bark(); } 你需要: public class Puppy : IPuppy { public void Bark() {

正在做我的项目,我想不出还有什么。在这一部分中,我不能使用null
IPagedList products=null,但当我创建
IPagedList products=new IPagedList
时,它会说我也不能这样做。

您不能初始化接口。您需要初始化实现接口的类

如果你有:

public interface IPuppy
{
   void Bark();
}
你需要:

public class Puppy : IPuppy
{
   public void Bark()
   {
      Console.WriteLine("Bark!");
   }
}

有关接口的更多信息,请访问。

您可能正在调用
null
集合上的扩展方法。正如您所说,您可以像这样初始化集合:

IPagedList<Product_list> products = null;

这将失败,因为正如错误所述,
products
null
。语法允许您在
null
对象上调用扩展方法,这主要是因为扩展方法只是语法糖。但它只是在运行时返回一个错误。您需要首先将
产品
初始化为有效实例。

什么“说明您不能这样做”?请显示产生错误的代码。这里的第一行是有效的,第二行不是,因为您不能在接口上调用构造函数。错误听起来像是来自您正在调用的扩展方法。第二行是语法错误,
IPagedList
可能是一个无法直接初始化的接口。您需要一个具体的IPagedList实现。类似于:IPagedList products=new PagedList();
products = products.Where(p => someCondition);