我正在尝试上传图片并使用自动映射器将其从 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();
}));
我在 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(); } }
用法:
Mapper.CreateMap<HttpPostedFileBase, byte[]>() .ConvertUsing<HttpPostedFileBaseTypeConverter>();
使用
ConstructUsing
并内联:Mapper.CreateMap<HttpPostedFileBase, byte[]>() .ConstructUsing(fb => { MemoryStream target = new MemoryStream(); fb.InputStream.CopyTo(target); return target.ToArray(); });
关于c# - 使用自动映射器从 HttpPostedFileBase 映射到 Byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242783/