有没有办法创建一个带有反射的HttpPostedFile实例。
我试过了:
var obj = (HttpPostedFile)typeof(HttpPostedFile).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, Type.EmptyTypes, null).Invoke(null);
var obj2 = Activator.CreateInstance(typeof(HttpPostedFile)
, BindingFlags.NonPublic | BindingFlags.Instance
, null
, new object[] { }
, System.Globalization.CultureInfo.CurrentCulture);但这两种方法都不起作用。
更新:显然内部构造函数看起来像这样:
internal HttpPostedFile(string filename, string contentType, Stream stream)我试过了,但没有成功:
Stream s = new MemoryStream(b.blob);
//var httpPostedFile = new HttpPostedFile();
Type[] parameters = { typeof(string), typeof(string), typeof(Stream) };
var obj = (HttpPostedFile)typeof(HttpPostedFile).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, parameters, null)
.Invoke(new object[] { "filename", "image/jpeg", s });发布于 2009-12-18 16:35:19
我会走另一条路。只需再添加一层抽象:创建一个包含所有所需成员的IHttpPostedFile接口,并在代码和测试中使用该接口。有了这个接口后,您有两种方法可用:一种是使用鸭子类型将IHttpPostedFile“强制转换”为标准HttpPostedFile,另一种方法是在您自己的类中实现此接口,该类将把调用转发给HttpPostedFile类的聚合实例。
发布于 2009-12-18 16:30:50
HttpPostedFile类需要HttpInputStream类的实例,而不是MemeoryStream。HttpInputStream也是一个内部类,所以你需要使用反射来创建它。你真的需要这样做吗?
https://stackoverflow.com/questions/1920977
复制相似问题