[Map(Name = "NewsCategory")] public class CategoryDto
public static DataTransferObject.CategoryDto MapToDto (this DataObjects.NewsCategory item) { if (item == null) return null; var itemDto = new DataTransferObject.CategoryDto (); itemDto.NewsCategoryId = item.NewsCategoryId; itemDto.Name = item.Name; itemDto.ParentCategory = item.ParentCategory.MapToDto(); itemDto.ChildCategories = item.ChildCategories.Select(x => x.MapToDto()); return itemDto; }
[Map(Function="itemDto.Status = item.Status.ToString()") ] public string Status { get; set; }
namespace DataTransferObject { [Map] public class NewsDto { public Guid? NewsId { get; set; } public string Title { get; set; } public string Anounce { get; set; } public string Text { get; set; } public string Status { get; set; } public CategoryDto Category { get; set; } public DateTime Created { get; set; } public string Author { get; set; } public IEnumerable<string> Tags { get; set; } } } namespace DataObjects { [Map] public class News { public Guid NewsId { get; set; } public string Title { get; set; } public string Anounce { get; set; } public string Text { get; set; } [Map(FunctionFrom = "itemDto.Status = item.Status.ToString()", FunctionTo = "item.Status = (DataObjects.Attributes.StatusEnum) System.Enum.Parse(typeof(DataObjects.Attributes.StatusEnum), itemDto.Status)")] public StatusEnum Status { get; set; } public NewsCategory Category { get; set; } public DateTime Created { get; set; } [Map(FunctionFrom = "itemDto.Author = item.Author.Login")] public User Author { get; set; } [Map(Name = "Tags", FunctionFrom = "itemDto.Tags = item.NewsToTags.Select(p => p.Tag.Name)")] public IEnumerable<NewsToTags> NewsToTags { get; set; } } }
public static DataTransferObject.NewsDto MapToDto (this DataObjects.News item) { if (item == null) return null; var itemDto = new DataTransferObject.NewsDto (); itemDto.NewsId = item.NewsId; itemDto.Title = item.Title; itemDto.Anounce = item.Anounce; itemDto.Text = item.Text; itemDto.Status = item.Status.ToString(); itemDto.Category = item.Category.MapToDto(); itemDto.Created = item.Created; itemDto.Author = item.Author.Login; itemDto.Tags = item.NewsToTags.Select(p => p.Tag.Name); return itemDto; } public static DataObjects.News MapFromDto (this DataTransferObject.NewsDto itemDto) { if (itemDto == null) return null; var item = new DataObjects.News (); item.NewsId = itemDto.NewsId.HasValue ? itemDto.NewsId.Value : default(System.Guid); item.Title = itemDto.Title; item.Anounce = itemDto.Anounce; item.Text = itemDto.Text; item.Status = (DataObjects.Attributes.StatusEnum) System.Enum.Parse(typeof(DataObjects.Attributes.StatusEnum), itemDto.Status); item.Category = itemDto.Category.MapFromDto(); item.Created = itemDto.Created; return item; } public static DataTransferObject.CategoryDto MapToDto (this DataObjects.NewsCategory item) { if (item == null) return null; var itemDto = new DataTransferObject.CategoryDto (); itemDto.NewsCategoryId = item.NewsCategoryId; itemDto.Name = item.Name; itemDto.ParentCategory = item.ParentCategory.MapToDto(); itemDto.ChildCategories = item.ChildCategories.Select(x => x.MapToDto()); return itemDto; } public static DataObjects.NewsCategory MapFromDto (this DataTransferObject.CategoryDto itemDto) { if (itemDto == null) return null; var item = new DataObjects.NewsCategory (); item.NewsCategoryId = itemDto.NewsCategoryId; item.Name = itemDto.Name; item.ParentCategory = itemDto.ParentCategory.MapFromDto(); if(itemDto.ChildCategories != null) item.ChildCategories.ReplaceRange(itemDto.ChildCategories.Select(x => x.MapFromDto())); return item; }
MapHelper.DoProjects.Add("DataObject"); // , DO MapHelper.DtoProjects.Add("DataTransferObject"); // , DTO MapHelper.MapExtensionClassName = "MapExtensionsViewModel"; // , . MapHelper.MapAttribute = "Map"; MapHelper.MapIgnoreAttribute = "MapIgnore"; // , , . MapHelper.DtoSuffix = "Dto"; MapHelper.DoSuffix = "ViewModel"; // , . MapHelper.DOSkipAttribute = false; MapHelper.DTOSkipAttribute = false; // , [Map] , .
var dto = item.MapToDto()
Source: https://habr.com/ru/post/260963/