AutoMapper和IDataReader

时间:2018-01-10 13:12:49

标签: c# automapper idatareader automapper-6

我想将数据从[2018-01-10 17:23:51,411] ERROR Processor got uncaught exception. (kafka.network.Processor) java.lang.NoClassDefFoundError: Could not initialize class java.net.IDN at javax.net.ssl.SNIHostName.<init>(SNIHostName.java:175) at sun.security.ssl.ServerNameExtension.<init>(ServerNameExtension.java:137) at sun.security.ssl.HelloExtensions.<init>(HelloExtensions.java:78) at sun.security.ssl.HandshakeMessage$ClientHello.<init>(HandshakeMessage.java:250) at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:217) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) at sun.security.ssl.Handshaker$1.run(Handshaker.java:919) at sun.security.ssl.Handshaker$1.run(Handshaker.java:916) at java.security.AccessController.doPrivileged(Native Method) at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369) at org.apache.kafka.common.network.SslTransportLayer.runDelegatedTasks(SslTransportLayer.java:336) at org.apache.kafka.common.network.SslTransportLayer.handshakeUnwrap(SslTransportLayer.java:414) at org.apache.kafka.common.network.SslTransportLayer.handshake(SslTransportLayer.java:270) at org.apache.kafka.common.network.KafkaChannel.prepare(KafkaChannel.java:62) at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:338) at org.apache.kafka.common.network.Selector.poll(Selector.java:291) at kafka.network.Processor.poll(SocketServer.scala:476) at kafka.network.Processor.run(SocketServer.scala:416) at java.lang.Thread.run(Thread.java:745) 映射到某个类,但不能简单地完成。我写了以下代码:

IDateReader

UPD:我试图使用Nuget的Automapper.Data,但它取决于 NETStandard.Library但我使用的是.NET Framework 4.5 但这种方式对我不利,因为我必须为每列描述映射规则。是否有可能避免描述所有这些规则?

1 个答案:

答案 0 :(得分:1)

您可以使用ITypeConverter,例如以下内容:

public class DataReaderConverter<TDto> : ITypeConverter<IDataReader, TDto> where TDto : new
{
    public TDto Convert(IDataReader source, TDto destination, ResolutionContext context)
    {
        if (destination == null)
        {
            destination = new TDto();
        }

        typeof(TDto).GetProperties()
            .ToList()
            .ForEach(property => property.SetValue(destination, source[property.Name]));
    }
}


cfg.CreateMap<IDataReader, MyDto>().ConvertUsing(new DataReaderConverter<MyDto>());