我正在尝试使用以下命令创建一个HttpPostedFile实例
var obj2 = Activator.CreateInstance(
typeof(HttpPostedFile),
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new object[] { },
System.Globalization.CultureInfo.CurrentCulture
);但我得到了错误‘构造函数的类型'System.Web.HttpPostedFile’找不到.‘。
有没有其他方法来创建HttpPostedFile的实例,或者我做错了什么?
发布于 2009-12-17 21:17:11
您也许可以改用System.Web.HttpPostedFileBase。它具有与HttpPostedFile相同的方法,但是是为子类化而设计的。然后,您可以使用HttpPostedFileWrapper将实际的HttpPostedFile传递给需要HttpPostedFileBase的方法。
这些额外的类在System.Web.Abstractions程序集中。ASP.NET MVC利用这一点(以及同一程序集中的其他抽象)来简化单元测试。有关详细信息,请参阅the documentation on MSDN。
发布于 2011-09-09 05:00:05
我刚刚遇到了同样的问题,并使用Moq解决了它,如下所示
var postedfile = new Mock<HttpPostedFileBase>();
postedfile.Setup(f => f.ContentLength).Returns(8192);
postedfile.Setup(f => f.FileName).Returns("myfile.txt");
postedfile.Setup(f => f.InputStream).Returns(new MemoryStream(8192));
myObject.HttpPostedFile = postedfile.Object;发布于 2009-12-17 20:49:54
HttpPostedFile有一个内部构造函数,它接受3个参数,不打算从您的代码中调用:
internal HttpPostedFile(string filename, string contentType, HttpInputStream stream)为了实例化这个类,您需要传递一个文件名、一个内容类型和一个HttpInputStream实例,该实例也是一个内部类型,因此实例化它的唯一方法是通过反射。
https://stackoverflow.com/questions/1921543
复制相似问题