diff --git a/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs b/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs index ac32cd6c7dd..d7ee770ea6d 100644 --- a/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs +++ b/src/Elasticsearch.Net/Connection/RequestHandlers/RequestHandlerBase.cs @@ -56,17 +56,27 @@ protected byte[] PostData(object data) var s = data as string; if (s != null) return s.Utf8Bytes(); - var ss = data as IEnumerable; - if (ss != null) return (string.Join("\n", ss) + "\n").Utf8Bytes(); + var dataType = data.GetType(); + + if (typeof(IEnumerable).IsAssignableFrom(dataType)) + { + var ss = (IEnumerable)data; + return (string.Join("\n", ss) + "\n").Utf8Bytes(); + } + + if (typeof(IEnumerable).IsAssignableFrom(dataType)) + { + var so = (IEnumerable)data; + var joined = string.Join("\n", so + .Select(soo => this._serializer.Serialize(soo, SerializationFormatting.None).Utf8String())) + "\n"; + return joined.Utf8Bytes(); + } - var so = data as IEnumerable; var indent = this._settings.UsesPrettyRequests ? SerializationFormatting.Indented : SerializationFormatting.None; - if (so == null) return this._serializer.Serialize(data, indent); - var joined = string.Join("\n", so - .Select(soo => this._serializer.Serialize(soo, SerializationFormatting.None).Utf8String())) + "\n"; - return joined.Utf8Bytes(); + + return this._serializer.Serialize(data, indent); } protected static bool IsValidResponse(ITransportRequestState requestState, IElasticsearchResponse streamResponse)