ValueInjector にオブジェクトを正しくマップさせるのに問題があります。これは、マッピングに使用しているコードです。
public IEnumerable<CategoryDTO> FindCategories(IList<object[]> criteria)
{
IEnumerable<Category> categories = _categoryRepo.Find(criteria);
IEnumerable<CategoryDTO> categoriesDto = Mapper.Map<IEnumerable<Category>, IEnumerable<CategoryDTO>>(categories);
return categoriesDto;
}
変数のカテゴリには次のプロパティが含まれています。
IEnumerable<Standard> Standards
このプロパティには、呼び出しているインスタンスに 2 つの標準オブジェクトが含まれています。問題は、Category から CategoryDTO にマップするときです。CategoryDTO は次のように定義されます。
public class CategoryDTO : AuditableDTO
{
public Guid CategoryId { get; set; }
public string Name { get; set; }
public string MachineName { get; set; }
public string Description { get; set; }
public IEnumerable<StandardDTO> Standards { get; set; }
}
マッピング ステートメントを実行した後、categoriesDto.Standards の内容を調べると、null であることがわかります。標準がマップされていることを期待していましたが、ValueInjector で何かが欠けていると確信しています。おそらく、Standard を StandardDTO にマップする方法を伝えるようなものでしょう。何かご意見は?
編集:明確にする必要があります。これを使用していますhttp://valueinjecter.codeplex.com/wikipage?title=Automapper%20Simulation&referringTitle=Home
編集 2: 深く掘り下げると、私の Iesi.Collections.HashedSet が問題を引き起こしていることがわかります。カテゴリの Standards プロパティは Iesi.Collections.ISet として型付けされ、これは HashedSet に変換されます。したがって、私の本当の質問は、そのタイプのプロパティをどのように確認し、どのようにマップできるのでしょうか?