Если вам нужен такой вид разделения и разделения сущностей - вы можете создать DTO объект вместе с каждым бизнес-объектом и использовать DTO для связи со Сервисом.Но если у вас есть много бизнес-объектов, рассмотрите другой подход, чтобы избежать ада обслуживания.
public sealed class ExportProductDto
{
public(ProductForExport exportProduct)
{
// initialize fields
this.ExportId = exportProduct.ExportId;
}
public int ExportId { get; private set; }
}
Кстати, решение с избыточным количеством ресурсов с перегрузкой оператора, используйте Шаблон адаптера для преобразования между типами продуктов.
Чтобы отделить адаптацию от сущностей, самостоятельно реализуйте следующий интерфейс:
public interface IProductAdapter<TImport, TExport>
{
TImport ToImportProduct(TExport exportProduct);
TExport ToExportProduct(TImport importProduct);
}
Или другой подход адаптера:
// Implement this interface for ProductForImport class
// public class ProductForImport : IExportProductAdapter, Product
public interface IExportProductAdapter
{
ProductForExport ToExportProduct();
}
// Implement this interface for ProductForExport class
// public class ProductForExport : IImportProductAdapter, Product
public interface IImportProductAdapter
{
ProductForImport ToImportProduct();
}
РЕДАКТИРОВАТЬ: Ответ на комментарии
// An example of IExportProductAdapter adapter implementation
public sealed class ProductForImport : Product, IExportProductAdapter
{
public int ImportId { get; set; }
public ProductForExport ToExportProduct()
{
ProductForExport p = new ProductForExport();
p.Id = this.Id;
p.IsExportable = true;
p.ExportId = 0;
return p;
}
}
И тогда вместо:
ProductForExport pfe2 = (ProductForExport)pfi;
Вы можете сделать:
ProductForExport pfe2 = pfi.ToExportProduct();