2013-02-15 13 views
8

は私の現在のマッピングです:AutoMapper .ForMemberメソッドのコンパイルエラー。私はここでAutomapper</p> <p>を使用してマップしようとしています無効な過負荷

Mapper.CreateMap(Of NameAddress, PersonalDetails)() _ 
      .ForMember(Function(dest) dest.Forenames, Function(opt) opt.MapFrom(Function(src) src.Forename)) _ 
      .ForMember(Function(dest) dest.TelephoneNumber, Function(opt) opt.MapFrom(Function(src) src.TelephoneNo1)) _ 
      .ForMember(Function(dest) dest.MobileNumber, Function(opt) opt.MapFrom(Function(src) src.MobilePhoneNo)) _ 
      .ForMember(Function(dest) dest.NationalInsuranceNumber, Function(opt) opt.MapFrom(Function(src) src.NINo)) _ 
      .ForMember(Function(dest) dest.DateOfBirth, Function(opt) opt.MapFrom(Function(src) src.BirthDate)) 

のでNameAddressソースオブジェクトから、私はPersonalDetails先のオブジェクトにマップします。ソースと宛先の両方の残りのプロパティは同じであるため、マッピングが明示的に定義されていません。

しかし、このマッピングを使用してコンパイルしようとすると、次のコンパイル時エラーが発生します。

Overload resolution failed because no accessible 'ForMember' can be called with these arguments: 
    'Public Function ForMember(name As String, memberOptions As System.Action(Of AutoMapper.IMemberConfigurationExpression(Of Infrastructure.NameAddress))) As AutoMapper.IMappingExpression(Of Infrastructure.NameAddress, Core.TaxiLicensing.PersonalDetails)': Lambda expression cannot be converted to 'String' because 'String' is not a delegate type. 
    'Public Function ForMember(name As String, memberOptions As System.Action(Of AutoMapper.IMemberConfigurationExpression(Of Infrastructure.NameAddress))) As AutoMapper.IMappingExpression(Of Infrastructure.NameAddress, Core.TaxiLicensing.PersonalDetails)': Expression does not produce a value. 
    'Public Function ForMember(destinationMember As System.Linq.Expressions.Expression(Of System.Func(Of Core.TaxiLicensing.PersonalDetails, Object)), memberOptions As System.Action(Of AutoMapper.IMemberConfigurationExpression(Of Infrastructure.NameAddress))) As AutoMapper.IMappingExpression(Of Infrastructure.NameAddress, Core.TaxiLicensing.PersonalDetails)': Expression does not produce a value. 

何が欠けていますか?私のマッピングは間違っていますか?それは私が使用しようとしていない関数のオーバーロードをユーザーに試しているようです。

答えて

15

私のミス...

が使用されている必要があります:

Mapper.CreateMap(Of NameAddress, PersonalDetails)() _ 
      .ForMember(Function(dest) dest.Forenames, Sub(opt) opt.MapFrom(function(src) src.Forename)) _ 
      .ForMember(Function(dest) dest.TelephoneNumber, sub(opt) opt.MapFrom(function(src) src.TelephoneNo1)) _ 
      .ForMember(Function(dest) dest.MobileNumber, Sub(opt) opt.MapFrom(function(src) src.MobilePhoneNo)) _ 
      .ForMember(Function(dest) dest.NationalInsuranceNumber, sub(opt) opt.MapFrom(function(src) src.NINo)) _ 
      .ForMember(Function(dest) dest.DateOfBirth, Sub(opt) opt.MapFrom(function(src) src.BirthDate)) 
+1

が、私はこのためにVBを嫌い、C#のはとても楽しかったです! – Muds

+2

「opt」パラメータで「Function」ではなく「Sub」を使用しています。 –

0
Mapper.CreateMap(Of Category, DTOCategory)() _ 
     .ForMember(Function(c) c.ID, Sub(opt) opt.Ignore()) _ 
     .ForMember(Function(c) c.NAME, Sub(opt) opt.Ignore()) 
+0

VB .NetでAutoMapperを設定するには –

関連する問題