将automapper版本从4.2.1更新到5.0.0后,我收到了缺少SourceValue的编译错误。这是我的例子
public class DraftLayoutCellPropertiesConverter : ITypeConverter<DraftLayoutCell, DraftGamePeriodDraftLayoutViewModel>
{
public DraftGamePeriodDraftLayoutViewModel Convert(ResolutionContext context)
{
var input = context.SourceValue as DraftLayoutCell;
var result = new DraftGamePeriodDraftLayoutViewModel();
if (input != null)
{
Run Code Online (Sandbox Code Playgroud)
该财产的替换应该是什么?这是做定制转换器的最佳方法吗?我期望此更新不会破坏现有代码,因为有很多人在使用该应用程序。
K. *_*R. 5
在 Automapper 5 中,接口ITypeConverter发生了变化,您需要更新您的实现:
public class DraftLayoutCellPropertiesConverter : ITypeConverter<DraftLayoutCell, DraftGamePeriodDraftLayoutViewModel>
{
public DraftGamePeriodDraftLayoutViewModel Convert(DraftLayoutCell source, DraftGamePeriodDraftLayoutViewModel destination, ResolutionContext context)
{
var input = source;
...
}
}
Run Code Online (Sandbox Code Playgroud)
MaK*_*MKo -1
正如我所看到的,ITypeConverter有以下声明:
public interface ITypeConverter<in TSource, out TDestination>
{
TDestination Convert(TSource source, ResolutionContext context);
}
Run Code Online (Sandbox Code Playgroud)
看起来你错误地实现了这个接口。
一旦你正确实现了它,你就可以使用TSource source参数来访问你的SourceValue。
关于你的问题“这是执行自定义转换器转换器的最佳方法”,: if you need to use the custom那么你肯定需要为其实现上面的接口。但是,这取决于您的情况,有时您可能需要使用自定义值提供程序,它可以像转换器一样使用。