2011-04-21 102 views
0

我可能會在這裏離開,但我想我回想起有一種方法可以擴展現有類並覆蓋其現有功能。c#類擴展器

例如,有沒有辦法讓LinkBut​​ton和擴展它來公開一個新的方法或屬性?有沒有辦法來覆蓋和現有的方法/財產?像NavigateURL一樣?

我不是在談論子類,我正在談論擴展。我在這裏?

謝謝

+0

我會做一個繼承你想修改的類,然後覆蓋你感興趣的內容 – BlackBear 2011-04-21 18:52:56

回答

4
public static class Extensions { 
    public static void NavigateURL(this LinkButton lb, string url) { 
    // do something 
    } 
} 

每個LinkBut​​ton的你的項目將有這個方法現在(沒有第一個參數)。第一個參數使用前綴「這個」,並且是要擴展,其餘的都是方法的參數類型的...

+0

這正是我所期待的!叫什麼方法?對象擴展? – BoredOfBinary 2011-04-21 19:24:01

+0

它被稱爲「擴展方法」 – 2011-04-21 19:33:05

0

聽起來像一個簡單的繼承類

public class MyLinkButton : LinkButton 
{ 
    //you can then override any method/property (intellisense will guide you) 
    public override bool Enabled 
    { 
     get 
     { 
      return base.Enabled; 
     } 
     set 
     { 
      base.Enabled = value; 
     } 
    } 
} 

據我所知,你可以只覆蓋基類中的虛擬,抽象或已重寫的方法/屬性。

+0

你甚至可以用'new'關鍵字來做壞事重新聲明方法。對於簡單的事情,例如添加一個方法來添加一個額外的類是過度勞累,並且可能擴展方法更適合,當需要修改行爲時,當然是。 – 2011-04-21 19:36:04