【问题标题】:Overriding NameValueCollection ToString覆盖 NameValueCollection ToString
【发布时间】:2016-10-30 22:16:03
【问题描述】:

我编写了以下扩展方法来覆盖NameValueCollection.ToString

public static string ToString(this NameValueCollection a)
{
    return string.Join("&", a.AllKeys.Select(k => $"{k}={a[k]}"));
}

但它仍然使用默认的ToString 方法。

当我添加 override 关键字时出现错误:

'ToString(NameValueCollection)': 找不到合适的方法来覆盖

当我添加 new 关键字时,它表示不需要 new 关键字:

'ToString(NameValueCollection)' 不会隐藏继承的成员。 new 关键字不是必需的。

【问题讨论】:

    标签: c# overriding namevaluecollection


    【解决方案1】:

    如果你想覆盖NameValueCollection的ToString(),你需要创建一个继承NameValueCollection的新对象

    public class CustomNameValueCollection:NameValueCollection
    {
         public override String ToString()
         {
             return string.Join("&", AllKeys.Select(k => $"{k}={this[k]}"));
         }
    }
    

    您在新的 CustomValueCollection 中填写您的集合,然后可以调用 ToString()。

    CustomValueCollection coll = new CustomValueCollection();
    coll.Add("key", "value");
    
    string collString = coll.ToString();
    

    【讨论】:

    • 好吧,我希望更改默认的 tostring 方法,但这似乎是唯一的方法。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2010-11-23
    • 2016-05-23
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多