2011-11-17 18 views
13

में बदल दिया गया है ITypeConverter इंटरफ़ेस को कनवर्ट विधि के लिए "TDestination Convert (TSource Source)" के बजाय "TDestination Convert (ResolutionContext संदर्भ)" के रूप में बदल दिया गया है।ऑटोमैपर कनवर्टर इंटरफ़ेस ऑटोमैपर 2.0

'BusinessFacade.Mappers.DecimalToNullableInt' does not implement interface member 'AutoMapper.ITypeConverter.Convert(AutoMapper.ResolutionContext)'

मेरी मानचित्रकारों की तरह नया मैपर के लिए कोई अच्छा पूर्ण नमूना:

http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters

मेरे कोड में, अब मैं इस त्रुटि मिलती है? मैं अपनी परियोजनाओं में किसी भी कोड (या कम से कम कोड) बदल नहीं चाहता ...

मेरे नक्शाकार

public class DecimalToNullableInt : ITypeConverter<decimal, int?> 
    { 
     public int? Convert(decimal source) 
     { 
      if (source == 0) 
       return null; 
      return (int)source; 
     } 
    } 

अद्यतन

ITypeConverter इंटरफ़ेस एक "TDestination के लिए बदल दिया गया है कन्वर्ट विधि के लिए "TDestination कन्वर्ट (TSource स्रोत)" के बजाय "कन्वर्ट (समाधान कॉन्टेक्स्ट संदर्भ)"।

दस्तावेज़ीकरण अभी पुराना है। एक टाइप टाइप कनवर्टर सुविधा वर्ग के रूप में अच्छी तरह से के रूप में एक ITypeConverter है। TypeConverter रेज़ोल्यूशन कॉन्टेक्स्ट को छुपाता है, जबकि ITypeConverter इसे उजागर करता है।

http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters

https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters

http://groups.google.com/group/automapper-users/browse_thread/thread/6c523b95932f4747

उत्तर

15

आप ResolutionContext.SourceValue संपत्ति से दशमलव हड़पने के लिए होगा:

public int? Convert(ResolutionContext context) 
    { 
     var d = (decimal)context.SourceValue; 
     if (d == 0) 
     { 
      return null; 
     } 
     return (int) d; 
    }