【发布时间】:2020-08-25 16:48:33
【问题描述】:
我有一个 EF 模型类、一个 DTO BaseClass 和一个从 BaseClass 扩展的 DTO AdminClass。我从 EF 获取数据并使用 AutoMapper 类使用下面的代码转换为适当的对象。
public async Task<object> GetItems()
{
object nearestItems = _dbContext.Items.ToList(); // Gets it from DBContext.Items....
var dtoList = IsAuthenticated ? MapObject<IEnumerable<AdminClass>>(nearestItems) : MapObject<IEnumerable<BaseClass>>(nearestItems);
return dtoList;
}
private T MapObject<T>(object obj)
{
object convertedObject = null;
//convertedObject = IsAuthenticated ? _mapper.Map<IList<AdminClass>>(obj) : _mapper.Map<BaseClass>(obj);
return (T)convertedObject;
}
但是当响应被发回时,这只会返回BaseClass 属性,即使它已经过身份验证并且应该返回AdminClass 属性以及BaseClass。为了返回适当的对象,我必须使用 If/Else 条件,而不是 三元 运算符,并且必须使用 AdminClassWithoutBaseClass 来返回所有属性。虽然不理想,因为我必须在之后进行一些其他操作,但它确实有效。但是,我想知道如何使它与上述语法一起使用,以及是否有一种简洁的编写方式。
您可以在Dotnetfiddle 上查看示例代码。
【问题讨论】:
标签: c# entity-framework .net-core automapper generic-list