私が派生した基本クラス(ブラックボックス。変更できません)があります。私の派生クラスでは、ユーザーがプロパティを使用できるようにするのではなく、代わりにパブリック関数を使用できるようになりました。理由の詳細については説明しませんが(関係ありません)、非表示にしようとしているプロパティは次のとおりです。
public ComboBoxItemCollection Items { get; }
私はこれを試しましたが、うまくいきませんでした:
private new ComboBoxItemCollection Items { get; set; }
私もこれを試しましたが、コンパイラは両方のアクセサをプライベートにすることは許可されていないと言っています。
public new ComboBoxItemCollection Items { private get; private set; }
これを適切に行うにはどうすればよいですか?私はこれが完全なセキュリティソリューションであることに依存していないことに注意してください。明らかに、基本クラスにキャストすることで、このプロパティを呼び出すことができます。これは単に、コンパイル時エラーをユーザーに提供することを目的としています。これは、ユーザーがこのプロパティを使用できず、代わりに派生クラスで新しい関数を使用する必要があることを理解するのに役立ちます。
編集
このスレッドの回答のおかげで、私は次の解決策を思いつきました。
[Obsolete( "This property is obsolete. Please use MRUIdComboBox.AddItem() instead.", true )]
public new ComboBoxItemCollection Items
{
get
{
throw new NotSupportedException( "This property is not supported. Please use MRUIdComboBox.AddItem() instead." );
}
}