Tob*_*asW 3 c# automapper asp.net-mvc-5
我试图上传图片并使用automapper将其从HttpPostedFileBase转换为Byte [].这是我的CreateMap:
Mapper.CreateMap<HttpPostedFileBase, Byte[]>()
.ForMember(d => d, opt => opt.MapFrom(s =>
{
MemoryStream target = new MemoryStream();
s.InputStream.CopyTo(target);
return target.ToArray();
}));
Run Code Online (Sandbox Code Playgroud)
我在s上得到一个错误:带有语句体的lambda表达式无法转换为表达式树.
那么我应该如何编写我的CreateMap才能使其工作?
至少有两种方法可以做到这一点:
使用自定义类型转换器:
public class HttpPostedFileBaseTypeConverter :
ITypeConverter<HttpPostedFileBase, byte[]>
{
public byte[] Convert(ResolutionContext ctx)
{
var fileBase = (HttpPostedFileBase)ctx.SourceValue;
MemoryStream target = new MemoryStream();
fileBase.InputStream.CopyTo(target);
return target.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Mapper.CreateMap<HttpPostedFileBase, byte[]>()
.ConvertUsing<HttpPostedFileBaseTypeConverter>();
Run Code Online (Sandbox Code Playgroud)使用ConstructUsing并内联:
Mapper.CreateMap<HttpPostedFileBase, byte[]>()
.ConstructUsing(fb =>
{
MemoryStream target = new MemoryStream();
fb.InputStream.CopyTo(target);
return target.ToArray();
});
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |