2016-05-22 2 views
0

私はこのようなコードをここに持っています。BaseClassの使い方

class TextBox 
    { 

     TextBox() 
     { 
      _guid = new Guid(); 
     } 
     private Guid _guid; 
     public Guid Guid { 
      get { return _guid; } 
      private set { value = _guid; } 

     } 


     public string Label { get; set; } 
    } 

のGuidプロパティおよび生成を実装するコード繰り返し毎回を避けることができetc.How私はまた、Buttonクラス、CheckBoxクラスのような他のアイテムを持っているが。

+0

なぜGUIDが必要ですか? – jdweng

+0

Guidプロパティを持ち、そのクラスを継承するクラスを作成しますか? – Bauss

+1

WinFormsコントロールの階層と継承の使用方法を学習できます。ただし、GUI環境で実行している場合は、ネームスペースを使用して既存のオブジェクトと競合しないように注意する必要があります。 –

答えて

1

からそれを呼び出すことができます。各コントロールは単にベースから継承されます。

Guidの目的が一意の識別子を持つ場合は、インスタンスのハッシュを取得することをおすすめします。

例:

var textBoxId = MyTextBox.GetHashCode(); 

注:@Maarteenで述べたように、GetHashCodeメソッドは、一意性を保証するものではありません。ドキュメント:

GetHashCodeメソッドのデフォルト実装では、 では異なるオブジェクトの一意の戻り値が保証されません。さらに、 .NET Frameworkは、 GetHashCodeメソッドの既定の実装を保証しません。返される値は、 異なる.NET Frameworkのバージョン間で同じになります。したがって、このメソッドのデフォルトの の実装は、ハッシュの目的で固有のオブジェクト の識別子として使用してはなりません。

+0

答えてくれてありがとうございます。ここで質問するのは適切ではありませんが、私が喜んでくれれば幸いです.HTMLコードを生成したいです。このclass.thereはちょっと面倒な方法ですが、どうすればそのようにできるのですか?ありがとうございます – stackada

+0

WPFまたはWinFormsを使用していますか? –

+0

ウェブベースのアプリケーション。私はちょうど私がクラスライブラリを作成し、mvcアプリケーションを含めるHTML form.soを生成したい。 – stackada

0

既存のコントロールを拡張したい場合は、このコントロールを継承する必要が

public class MyTextBox : TextBox 
{ 
    public Guid Guid { get; set; } 
    public string Label { get; set; } 
} 

あなたは、既存のコントロールを変更することはできませんので、すべてのコントロールのためにこれを繰り返す必要があります。継承階層をゼロから作成する場合(コントロールでは不可能)、これらのプロパティを基本クラスに追加し、そこから他のクラスを派生させるだけです。

あなたは、より複雑な機能を統合したい場合は、組成物を用いる、すなわち個別に新しい機能を作成し、構築時にGuidをインスタンス化しますbaseclassを作成することができます派生クラス

public class ComplexFunctionality 
{ 
    private readonly Control _c; 

    public ComplexFunctionality(Control c) 
    { 
     _c = c; 
    } 

    public void SettingGuid(Guid newGuid) 
    { 
     ... 
    } 
} 

public class MyTextBox : TextBox 
{ 
    private readonly ComplexFunctionality _cs = new ComplexFunctionality(this); 

    private Guid _guid; 
    public Guid Guid { 
     get { return _guid; } 
     private set { 
      _cs.SettingGuid(value); 
      _guid = value; 
     } 
    } 
} 
関連する問題