Hiển thị các bài đăng có nhãn C#. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn C#. Hiển thị tất cả bài đăng
Thứ Tư, 11 tháng 4, 2012
Một số link lưu ý
Link học .net cơ bản: www.dotnetperls.com
Kỹ thuật Reflection C#
Theo mình thấy, Reflection dùng để xác định kiểu của Object mà bạn đưa vào, và nếu như lấy giá trị của đối tượng thất bại, sẽ trả về null hoặc là giá trị nào đó do mình gán.
Ban đầu mình làm 3 hàm như sau:
Ban đầu mình làm 3 hàm như sau:
public JsonResult ViewTempByGuid(Guid name) { var image = Context.Database.Files_Temporary.FirstOrDefault(f => f.TemporaryGuid == name); var filePathResult = new FilePathResult( FileManagerRepository.GetPathFromObjectType(enumObjectContentType.Temporary) + "\\" + image.RealFileName, DpnTools.GetMIMEType(image.RealFileName)); var img = Image.FromFile(filePathResult.FileName); var resizedImage = ImageHelper.ResizeImage(img, 800, 600); var base64 = "data:image/png;base64," + ImageHelper.ImageToBase64(resizedImage, ImageFormat.Png); return Json(new { base64 }, JsonRequestBehavior.AllowGet); } public JsonResult ViewTemp(Guid name, int left, int top) { var image = Context.Database.Files_Temporary.FirstOrDefault(f => f.TemporaryGuid == name); var filePathResult = new FilePathResult( FileManagerRepository.GetPathFromObjectType(enumObjectContentType.Temporary) + "\\" + image.RealFileName, DpnTools.GetMIMEType(image.RealFileName)); var img = Image.FromFile(filePathResult.FileName); var resizedImage = ImageHelper.ResizeImage(img, 72, 54); var base64 = "data:image/png;base64," + ImageHelper.ImageToBase64(resizedImage, ImageFormat.Png); return Json(new { name, base64, left, top }, JsonRequestBehavior.AllowGet); } ////[HttpPost] public string ShowCameraThumb(int id) { var image = Context.Database.Files_Uploaded.FirstOrDefault(f => f.ID == id); var filePathResult = new FilePathResult( FileManagerRepository.GetPathFromObjectType(enumObjectContentType.CameraSpot) + "\\" + image.RealFileName, DpnTools.GetMIMEType(image.RealFileName)); var img = Image.FromFile(filePathResult.FileName); var resizeImage = ImageHelper.ResizeImage(img, 72, 54); var base64 = "data:image/png;base64," + ImageHelper.ImageToBase64(resizeImage, ImageFormat.Png); return base64; }Vì thấy 3 hàm trên xử lý quá giống nhau, nên muốn viết nó thành một hàm, tất nhiên chưa nhiều đến mức để nghĩ đến việc viết theo hướng đối tượng, và mình đã dùng Reflection như ở dưới
public static string ConvertImageToBase64(Object o, int type=0)//2 { //enumObjectContentType enumObjectContentType = enumObjectContentType.Temporary; var enumObjectContentType = o.GetType().GetProperty("EnumObjectContentType").GetValue(o, null); var realFileName = o.GetType().GetProperty("RealFileName").GetValue(o, null); var width = 72; var height = 54; if (type == 2) { width = 800; height = 600; } var filePathResult = new FilePathResult( FileManagerRepository.GetPathFromObjectType((enumObjectContentType) enumObjectContentType) + "\\" + realFileName, DpnTools.GetMIMEType(realFileName.ToString())); return "data:image/png;base64," + ImageHelper.ImageToBase64( ImageHelper.ResizeImage(Image.FromFile(filePathResult.FileName), width, height), ImageFormat.Png); }Và sử dụng như sau:
var image = Context.Database.Files_Temporary.FirstOrDefault(f => f.TemporaryGuid == name); var base64 = AcceptanceRepository.ConvertImageToBase64(image);Khi đó, object sẽ tự xác định type.
Đăng ký:
Bài đăng (Atom)