Overriding NameValueCollection ToString

本文关键字:ToString NameValueCollection Overriding | 更新日期: 2023-09-27 18:15:47

我已经编写了以下扩展方法来覆盖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)'不隐藏继承的成员。新关键字不需要。

Overriding NameValueCollection ToString

如果你想为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();