2012-02-08 7 views
0

インターフェイスをカスタムコントロールに実装する方が良いかどうかを知りたいと思います。 私はカスタムボタンコントロールにInterfaceを実装しています。実装されているプロパティを参照するには、ボタンをインターフェイスタイプに変換してそれに到達する必要があります。共通コントロールの問題にカスタムプロパティを追加する

直接参照する方法はありますか?それを外部に公開するには、ボタンクラスにwarperプロパティを作成する必要がありますか?

​​

答えて

1

インターフェイスに値セットを保存すると思われます。インタフェースは、クラスがすべてのメンバーを実装する必要がある単なる契約です。エラーを投げている行をコメントアウトしても、MyButtonクラスですべてのメンバーが実装されていないコンパイル時エラーが発生します。MyInterface

クラスにstring MyPropを実装する必要があります。

public class MyButton : System.Windows.Forms.Button, MyInterface 
{ 
    public string MyProperty 
    { 
     get { return null; } 
     set { /* ??? */ } 
    } 
    public string MyProp { get; set; } // <------ Implement string MyProp 
} 

しかし、あなたが実際にやろうとしているが、複数のクラス間の単一のプロパティを共有しているどのような場合は、代わりに、基本クラスを使用して検討してください。

public class MyControlBase 
    : System.Windows.Forms.Button 
{ 
    public string MyProp { get; set; } 
} 

public class MyButton : MyControlBase 
{ 
    public string MyProperty { get; set; } 
} 

-

void Example() 
{ 
    var btn = new MyButton(); 
    var property = btn.MyProperty; 
    var prop = btn.MyProp; 
} 
+0

複数のクラス間で単一のプロパティを共有することは、私がしたいことです。しかし、複数のタイプのコントロール、コンボボックス、テキストボックス、ボタン、グループボックス。なぜ私はInterfaceを使っているのだろう。しかし、実装されたプロパティに直接アクセスできないという事実に直面しています。 (あなたが欠けていたimplementaionのためのあなたの権利は私の誤りだった) – Hugo

関連する問題