0

一部の機能の基本クラスとして扱うクラスを作成しました。今、私はそのクラスの働きを拡張したかったのです。しかし、ユーザーに見せたくないプロパティがいくつかあります。問題は、一部の Dependency プロパティをどのように非表示にできるかです。

については知ってBrowsableAttributeいますが、これは他のクラスで使用されているため、基本クラスでは使用できません。そのため、新しい拡張クラスの一部のプロパティのみを非表示にしたいと考えています。

 public class BaseControl : Control
    {
        static BaseControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(BaseControl), new FrameworkPropertyMetadata(typeof(BaseControl)));
        }



        public int BaseProperty
        {
            get { return (int)GetValue(BasePropertyProperty); }
            set { SetValue(BasePropertyProperty, value); }
        }

        // Using a DependencyProperty as the backing store for BaseProperty.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty BasePropertyProperty =
            DependencyProperty.Register("BaseProperty", typeof(int), typeof(BaseControl), new UIPropertyMetadata(100));


    }

    public class Child1Control : BaseControl
    {
      // Using BaseProperty for internal Uses. 
    }

    public class Child2Control : BaseControl
    { 
        //TODO: How To HIDE the BasePropery here so that
    }
4

2 に答える 2

0

基本クラスに、子クラスからアクセスできないプロパティとクラス化コードからアクセスできないプロパティがある場合は、プロパティをプライベートにします。

public MyBaseClass
{
    private string MyProperty { get; set; }


}

または、プロパティの代わりにプライベート変数を使用します。

public MyBaseClass
{
    private string _myProperty;


}
于 2013-03-18T15:13:00.143 に答える
0

これらのプロパティをオーバーライドしたくない場合は、単にReadOnlyとして登録してください。

于 2013-03-18T15:23:44.203 に答える