如何在不继承每种类型的情况下将 c;lass 映射到不同的程序集中?

问题描述 投票:0回答:1

是否有 c# 方法可以通过媒体映射来自不同程序集的类?媒体意味着适配器。到目前为止,我所做的是继承每个域实体。如果域程序集中有 40 个实体,我只是在应用程序程序集中继承该类,它创建了其他 40 个文件或 1 个具有所有继承的文件。然后将其用于其他程序集(基础设施程序集)。它相当重复的任务和臃肿的代码。如何捷径解决此类问题?我更喜欢 C# 内置方式而不是使用外部库。

域组装

SiteEntity.cs

namespace Domain.Entities;
public class SiteEntity
{
  public string Name { get; set; }
  public string Url { get; set; }
}
public class UserEntity {}

应用组装

MapSiteEntity.cs
每个实体单个文件

using Domain.Entities;
namespace Application.Entities;
public class MapSiteEntity : SiteEntity {}

或者

MapEntities.cs
单个文件包含所有实体

using Domain.Entities;
namespace Application.Entities;
public class MapSiteEntity : SiteEntity {}
public class MapUserEntity : UserEntity {}

基础设施组装

ApplicationDbContext.cs

using Application.Entities;
DbSet<MapSiteEntity> Sites => Set<MapSiteEntity>();

我想要什么,我创建像

MapperEntity.cs
这样的单个文件。它可以将域程序集内的文件夹实体内的所有类型转换为
MapEntities.cs

c# entity-framework
1个回答
0
投票

实现此目的的一种方法是创建一个

Interface
它将成为所有实体的父级。

您将使用该接口直接转换类。像这样的东西:

public static T Map<T>(ISite site) where T : ISite, new()
 {
    return new T { Name = site.Name };
 }
© www.soinside.com 2019 - 2024. All rights reserved.