将基本 class 值添加到派生 class 的最佳方法?
Best way to add base class values to derived class?
我有一个包含 class 的参考文件 (dll),我将其用作基础 class:
public class Group
{
public Group();
public int Id { get; set; }
public int League_Id { get; set; }
public string Name { get; set; }
public string Nationality { get; set; }
}
(请注意组 class 包含大约 30 个实体,我只显示了一些)
由于我使用 Entity Framework,因此 ID 必须是唯一的。我从 API 调用中获取此数据并注意到 ID 不是唯一的,我添加了我自己的 class.
public class modGroup : APICall.Group
{
public modGroup()
{
modID = 0;
}
[Key]
public int modID { get; set; }
}
此设置有效,EF 正在创建数据库。
我想做的是从 API(其结构为组 class)获取数据,创建一个新的 modGroup() 并设置来自 API 调用,而不引用每个单独的对象。
我想做的是在不设置每个实体的情况下传输数据。
List<APICall.Group> groupData= _ApiRequester.GetGroup();
using (var a = new databaseModel())
{
foreach (APICall.Group x in groupData)
{
var modGroup = new Models.modGroup();
modGroup.modID = 0;
// fill modgroup with rest of variables without doing:
// modGroup.League_iD = a.League_iD;
// modGroup.Name = a.Name;
// etc
}
}
我会使用 Automapper 在一次调用中将两个 类 映射在一起。这种情况就是它的设计目的。您需要做的就是创建一个映射配置,然后映射两个 类。这是一个非常简单但功能强大的工具。例如像这样:
var config = new MapperConfiguration(cfg => cfg.CreateMap<APICall.Group, modGroup>()
.ForMember(dest => dest.modID, s=>s.MapFrom(s=>s.Id));
// etc create more mappings here
);
var mapper = config.CreateMapper();
List<modGroup> modGroupList = mapper.Map<List<modGroup>>(groupData);
我有一个包含 class 的参考文件 (dll),我将其用作基础 class:
public class Group
{
public Group();
public int Id { get; set; }
public int League_Id { get; set; }
public string Name { get; set; }
public string Nationality { get; set; }
}
(请注意组 class 包含大约 30 个实体,我只显示了一些)
由于我使用 Entity Framework,因此 ID 必须是唯一的。我从 API 调用中获取此数据并注意到 ID 不是唯一的,我添加了我自己的 class.
public class modGroup : APICall.Group
{
public modGroup()
{
modID = 0;
}
[Key]
public int modID { get; set; }
}
此设置有效,EF 正在创建数据库。
我想做的是从 API(其结构为组 class)获取数据,创建一个新的 modGroup() 并设置来自 API 调用,而不引用每个单独的对象。
我想做的是在不设置每个实体的情况下传输数据。
List<APICall.Group> groupData= _ApiRequester.GetGroup();
using (var a = new databaseModel())
{
foreach (APICall.Group x in groupData)
{
var modGroup = new Models.modGroup();
modGroup.modID = 0;
// fill modgroup with rest of variables without doing:
// modGroup.League_iD = a.League_iD;
// modGroup.Name = a.Name;
// etc
}
}
我会使用 Automapper 在一次调用中将两个 类 映射在一起。这种情况就是它的设计目的。您需要做的就是创建一个映射配置,然后映射两个 类。这是一个非常简单但功能强大的工具。例如像这样:
var config = new MapperConfiguration(cfg => cfg.CreateMap<APICall.Group, modGroup>()
.ForMember(dest => dest.modID, s=>s.MapFrom(s=>s.Id));
// etc create more mappings here
);
var mapper = config.CreateMapper();
List<modGroup> modGroupList = mapper.Map<List<modGroup>>(groupData);