2012-02-08 92 views
0

我想知道是否有更好的方法將Interface實現爲自定義控件。 我在自定義按鈕控件中實現了一個接口,並且引用了我需要將按鈕轉換爲接口類型以實現它的已實現的屬性。將自定義屬性添加到常見控制問題

有沒有辦法直接引用它?我是否需要在按鈕類中創建修飾器屬性,以將其暴露給外部世界?

​​

回答

1

看來您期望接口存儲值集。接口只是類必須實現其所有成員的契約。即使您註釋掉髮生錯誤的行,您也會收到編譯時錯誤,您的MyButton類不會實現MyInterface的所有成員。

你需要在你的MyButton類上實現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。但是我面對的是實施的財產不能直接訪問的事實。 (您的錯誤實施是正確的,這是我的錯誤) – Hugo 2012-02-08 20:18:09