도메인 모델을 프레젠테이션 모델에 일반적으로 매핑하는 방법을 알아 내려고합니다. 예를 들어, 다음과 같은 간단한 객체와 인터페이스 ...도메인 모델을 프레젠테이션 모델에 일반적으로 매핑하는 방법은 무엇입니까?
// Product
public class Product : IProduct
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
public interface IProduct
{
int ProductID { get; set; }
string ProductName { get; set; }
}
// ProductPresentationModel
public class ProductPresentationModel : IProductPresentationModel
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public bool DisplayOrHide { get; set; }
}
public interface IProductPresentationModel
{
int ProductID { get; set; }
string ProductName { get; set; }
bool DisplayOrHide { get; set; }
}
이 같은 코드를 작성할 수 있도록하고 싶습니다
...
MapperObject mapper = new MapperObject();
ProductService service = new ProductService();
ProductPresentationModel model = mapper.Map(service.GetProductByID(productID));
...에서 "MapperObject"를 제공 두 속성에 매핑되는 속성과 반사, 규칙 기반 매핑 등을 사용하여 매핑되는 개체의 종류를 자동으로 파악할 수 있습니다. 그러면 UserPresentationModel 및 User와 같은 개체를 동일한 방식으로 쉽게 매핑 할 수 있습니다 MapperObject.
이것이 가능합니까? 그렇다면 어떻게?
편집 : 대신,
public class ProductMapper
{
public ProductPresentationModel Map(Product product)
{
var presentationModel = new ProductPresentationModel(new ProductModel())
{
ProductID = product.ProductID,
ProductName = product.ProductName,
ProductDescription = product.ProductDescription,
PricePerMonth = product.PricePerMonth,
ProductCategory = product.ProductCategory,
ProductImagePath = product.ProductImagePath,
ProductActive = product.ProductActive
};
return presentationModel;
}
}
난 여전히 목록 작업이 활용하는 방법을 해결하려고 노력하고 있어요 : 그냥 명확성을 위해, 여기에 내가 현재 사용하고 비 일반적인 MapperObject의 예입니다 하나의 제품에 불과하지만 다른 주제입니다. :)