首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建带有反射的HttpPostedFile实例

创建带有反射的HttpPostedFile实例
EN

Stack Overflow用户
提问于 2009-12-17 19:00:08
回答 2查看 3.8K关注 0票数 0

有没有办法创建一个带有反射的HttpPostedFile实例。

我试过了:

代码语言:javascript
复制
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);

但这两种方法都不起作用。

更新:显然内部构造函数看起来像这样:

代码语言:javascript
复制
internal HttpPostedFile(string filename, string contentType, Stream stream)

我试过了,但没有成功:

代码语言:javascript
复制
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 });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-18 16:35:19

我会走另一条路。只需再添加一层抽象:创建一个包含所有所需成员的IHttpPostedFile接口,并在代码和测试中使用该接口。有了这个接口后,您有两种方法可用:一种是使用鸭子类型将IHttpPostedFile“强制转换”为标准HttpPostedFile,另一种方法是在您自己的类中实现此接口,该类将把调用转发给HttpPostedFile类的聚合实例。

票数 1
EN

Stack Overflow用户

发布于 2009-12-18 16:30:50

HttpPostedFile类需要HttpInputStream类的实例,而不是MemeoryStream。HttpInputStream也是一个内部类,所以你需要使用反射来创建它。你真的需要这样做吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1920977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档