Tob*_*bin 5 .net c# automapper
所以,这是我的情况.我有两个班:
class FromClass
{
public string[] Foo { get; set; }
}
class ToClass
{
public string[] Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这些类具有数组属性.它们可以是List<T>或者IEnumerable<T>,我在任何一种情况下得到相同的结果.
我尝试使用以下方法从一个映射到另一个AutoMapper.QueryableExtensions:
class Program
{
static void Main(string[] args)
{
// create a "From" object
string[] anArray = new string[] { "a", "b" };
FromClass anObject = new FromClass() { Foo = anArray };
// make a queryable set that includes the "From" object
IQueryable<FromClass> queryableObjects = (new FromClass[] { anObject }).AsQueryable();
// set up AutoMapper
Mapper.CreateMap<FromClass, ToClass>();
Mapper.AssertConfigurationIsValid();
// test plain mapping
IQueryable<ToClass> test1 = queryableObjects.Select(o => Mapper.Map<FromClass, ToClass>(o));
// success!
// test queryable extensions
IQueryable<ToClass> test2 = queryableObjects.Project().To<ToClass>();
// InvalidOperationException: "Sequence contains no elements"
}
}
Run Code Online (Sandbox Code Playgroud)
为什么test2会抛出InvalidOperationException?如果我制作的Foo东西不是一个集合,例如一个string或其他类 - 那么一切都很完美.
难道我做错了什么?没理解什么?还是我遇到了一个bug?
我会说:这是一个错误:见Github Issue 159.
AutoMapper.QueryableExtensions在Mapper.CreateMapExpression内部使用,所以如果你写:
var expression = Mapper.CreateMapExpression<FromClass, ToClass>();
Run Code Online (Sandbox Code Playgroud)
它也会因同样的异常而失败.
看来Mapper.CreateMapExpression目前不支持:
List<string>等.string[],Bar[]等等.但如果你做到Foo了List<Item>它可以工作:
public class FromClass
{
public List<Item> Foo { get; set; }
}
public class ToClass
{
public List<Item> Foo { get; set; }
}
public class Item
{
public string Bar { get; set; }
}
var list = new List<Item> { new Item{ Bar = "a"}, new Item() { Bar= "b" }};
FromClass anObject = new FromClass() { Foo = list };
var queryableObjects = (new FromClass[] { anObject }).AsQueryable();
Mapper.CreateMap<FromClass, ToClass>();
Mapper.CreateMap<Item, Item>();
var test2 = queryableObjects.Project().To<ToClass>().ToArray();
Run Code Online (Sandbox Code Playgroud)
你可以评论上面提到的问题或用你的代码创建一个新问题(这是一个非常好的bug的重复)
| 归档时间: |
|
| 查看次数: |
5351 次 |
| 最近记录: |