Automapper Entity -> ViewModel マップ定義をコントローラーの 1 つから MVC アプリのOnApplicationStarted()
メソッドに移動しようとしています。それをコピーすると、エンティティの EntityCollection プロパティがそのToArray()
拡張メソッドにアクセスできなくなります。コンパイルしようとすると、署名に一致するメソッドまたは拡張メソッドがないというエラーが表示されます。
コード:
protected override void OnApplicationStarted()
{
// some Ninject setup code
Mapper.CreateMap<Game, AdminGameViewModel>()
.BeforeMap((s, d) =>
{
int platCount = s.Platforms.Count;
var plats = s.Platforms.ToArray(); // <-- line in question
d.PlatformIDs = new int[platCount];
for (int i = 0; i < platCount; ++i)
{
d.PlatformIDs[i] = plats[i].ID;
}
})
.ForMember(dest => dest.Pros, opt => opt.MapFrom(src => src.Pros.Split(new char[] { '|' })))
.ForMember(dest => dest.Cons, opt => opt.MapFrom(src => src.Cons.Split(new char[] { '|' })))
.ForMember(dest => dest.PlatformIDs, opt => opt.Ignore());
}
繰り返しますが、このコードはコントローラーから直接コピーして貼り付けたものであり、コンパイルして正常に実行されます。IEnumerable にキャストしようとしましたが、メソッドにもアクセスできません。