本文介绍了IDictionary到字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个 IDictionary 扩展名,以将 IDictionary Exception.Data 值写入字符串.

I have created an IDictionary extension to write IDictionary Exception.Data values to a string.

扩展代码:

public static class DictionaryExtension
{
    public static string ToString<TKey, TValue>(this IDictionary<TKey, TValue> source, string keyValueSeparator, string sequenceSeparator)
    {
        if (source == null)
            throw new ArgumentException("Parameter source can not be null.");

        return source.Aggregate(new StringBuilder(), (sb, x) => sb.Append(x.Key + keyValueSeparator + x.Value + sequenceSeparator), sb => sb.ToString(0, sb.Length - 1));
    }
}

当我在 Exception.Data.ToString("=","|")上使用此扩展名时,出现错误

When I use this extension on Exception.Data.ToString("=", "|") I get error

不能从用法中推断出类型实参.

有什么办法解决这个问题吗?

Any idea how to solve this?

推荐答案

Exception.Data 的类型为 IDictionary ,而不是 IDictionary< TKey,TValue> .

您需要将扩展​​方法更改为此:

You need to change your extension method to this:

public static string ToString(this IDictionary source, string keyValueSeparator,
                                                       string sequenceSeparator)
{
    if (source == null)
        throw new ArgumentException("Parameter source can not be null.");

    return source.Cast<DictionaryEntry>()
                 .Aggregate(new StringBuilder(),
                            (sb, x) => sb.Append(x.Key + keyValueSeparator + x.Value
                                                  + sequenceSeparator),
                            sb => sb.ToString(0, sb.Length - 1));
}

这篇关于IDictionary到字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-09 21:57