0

私は独自の基本ユーザーインターフェイスクラスの構築に取り組んでいます。それらについては、すべて同じような「共通の」プロパティとメソッドを持たせたいと思います。インターフェイスクラスを定義することはできますが、インターフェイスは抽象メソッドのみを許可し、プロパティを許可しないようです。

他の点ではまったく同じコードを各クラスにコピーしたくありませんが、実装方法がわかりません...例:この一般的なものをボタン、テキストボックス、チェックボックス、リストボックスなどのユーザーコントロールに適用できるようにします。

提案???

4

6 に答える 6

1

この状況では、私は通常、抽象クラスを使用します。基本抽象クラスを作成し、それを新しいコントロールから継承します。

于 2009-03-23T13:24:41.780 に答える
0

インターフェイスでプロパティを定義できます:インターフェイスプロパティ

public interface ISampleInterface
{
    // Property declaration:
    string Name
    {
        get;
        set;
    }
}
于 2009-03-23T13:25:08.863 に答える
0

次のように、インターフェイスでプロパティを宣言できます。

public interface IMyInterface
{
   string Name { get; set; }
   int Age { get; set; }
}

ただし、この状況では、抽象クラスの方が適しているように思われます。

于 2009-03-23T13:26:21.713 に答える
0

インターフェイスでプロパティを指定することは間違いなく可能です

interface IFoo {
  string Name { get; set; } 
  string Age { get; } // Read Only
}

しかし、そうでなければあなたは正しいです。インターフェイスは動作を指定しないため、「抽象的な」メソッドとプロパティのみを定義できます。実装は、すべての単一の実装者で実行する必要があります。これは、インターフェイスの柔軟性に対して支払われる代償です。

すべての子クラス間で動作が本当に同じである場合、私は通常、抽象クラスを選択します。またはしばしば組み合わせ。つまり、インターフェイスと、そのインターフェイスを実装する基本実装を定義します。

class Foo : IFoo { 
  private string _name;
  public Name { get { return _name; } set { _name = value; } }
  public Age { get { return 42; } }
}

これにより、何らかの理由でFooから派生できないクラスのインターフェイスを使用して、迅速な実装を柔軟に行うことができます。

于 2009-03-23T13:26:36.923 に答える
0

.Netでは多重継承は許可されていませんが、「継承階層」を使用して基本クラスを編成できます。これが.Net自体のレイアウトです。

于 2009-03-23T13:27:09.637 に答える
0

私自身、多重継承が許可され、広範囲に使用されるC ++のバックグラウンドを持っているので、あなたと同じ問題に遭遇することがよくあります。最初に行う必要があるのは、ミックスインについて調べることです。ここでは、名前を付けずに、自分でミックスインを使用していることに気付くでしょう。2番目のステップは、必要なときにいつでもミックスインを認識し始めることです。多くの場合、コンポジションを介してミックスインを使用した方がよいことがわかります。3番目のステップは、compositionを使用してそれらを実装することです...はい、私もこれが嫌いですが、.NET(またはJavaまたは...)に行きたい場合はそれを回避する方法はありません:)

継承を使用する必要があるのは、ミックスインではなく、実際にアイテムを識別するものです。いくつかの一般的なコントロール(テキストボックスなど)の.NET階層を調べて、インスピレーションを得ることをお勧めします。

幸運を

于 2009-03-23T13:32:34.930 に答える