DropDownListから継承されたクラスにItems.Addプロシージャをオーバーロードする方法はありますか?

.net asp.net drop-down-menu webui
DropDownListから継承されたクラスにItems.Addプロシージャをオーバーロードする方法はありますか?

DropDownListを継承する独自のカスタムクラスがあります。 Items.Addプロシージャをオーバーライドする方法はありますか? How?

  0  0


ベストアンサー

このクラスをインターフェイスに提供しているように、このクラスから継承する特定の理由はありますか? 答えがいいえの場合、継承よりも合成を使用する必要があります。あなたの問題は存在しません。

https://stackoverflow.com/questions/49002/prefer-composition-over-inheritance [継承よりも構成を優先しますか?]を参照してください。

1


デフォルトの追加機能をオーバーライドすることはできません( ListItemCollection`はシールされています)が、 ListItemCollection`クラスを拡張する拡張メソッドを作成できます。 これが一例です。

namespace Truthseeker.Extensions
{
    using System.Web.UI.WebControls;

    public static class ListItemCollectionExtensions
    {
        public static void Add(
            this ListItemCollection collection,
            ListItem item,
            string extraParameter)
        {
            if (extraParameter.Contains("Add"))
                collection.Add(item);
        }
    }
}

その後、次のように書くことができます。

DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("text", "value"), "Add");

0


タイトルとURLをコピーしました