【发布时间】:2012-04-24 04:49:00
【问题描述】:
所以,这是我的情况。我有一个我的两个类:
class FromClass
{
public string[] Foo { get; set; }
}
class ToClass
{
public string[] Foo { get; set; }
}
类的属性是数组。它们可能是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"
}
}
为什么 test2 会抛出 InvalidOperationException?如果我将Foo 的类型设为非集合,例如string 或其他类——然后一切正常。
我做错了吗?不明白什么?还是我遇到了错误?
【问题讨论】:
标签: c# .net automapper