2013-09-30 1 views
0

표준 WebControls.Button 컨트롤을 확장하는 데 문제가 있습니다. 나는 텍스트 속성을 재정의 할 필요가 있지만 오류 메시지가 나타납니다 :C#을 사용하여 Button에서 확장 된 컨트롤의 "Text"속성 재정의

가 가상, 추상적 인 또는 재정의를 표시하지 않기 때문에 inhereted 멤버 'System.Web.UI.WebControls.Button.Text.get'을 재정의 할 수 없습니다

는 내가하는 LinkButton에 대한 다음 코드를 사용, 그것은 완벽하게 작동 :

public class IconLinkButton : LinkButton 
{ 
    private string _icon = ""; 
    public string Icon 
    { 
     get 
     { 
      return _icon; 
     } 
     set 
     { 
      _icon = value; 
     } 
    } 

    public override string Text 
    { 
     get 
     { 
      return "<i class=\""+Icon+"\"></i> " + base.Text; 
     } 
     set 
     { 
      base.Text = value; 
     } 
    } 
} 

그러나, 표준 버튼을 위해 같은 일을하는 것은 내가 위에서 설명한 오류를 차기.

public class IconButton : Button 
{ 
    private string _icon = ""; 
    public string Icon 
    { 
     get 
     { 
      return _icon; 
     } 
     set 
     { 
      _icon = value; 
     } 
    } 

    public virtual string Text 
    { 
     get 
     { 
      return "<i class=\"" + Icon + "\"></i> " + base.Text; 
     } 
     set 
     { 
      base.Text = value; 
     } 
    } 
} 

어떻게 해결할 수 있습니까?

답변

2

LinkButton은 문자 속성이 이고 Button이 아니기 때문입니다.

당신은 완전히 new를 사용하여 기본 기능을 숨길 수 :

new를 사용
public class IconButton : Button { 
    public new string Text { 
     // implementation 
    } 
} 

완전히 상속 된 멤버를 숨 깁니다.

+0

'base.Text'는 부모의'Text' 속성을 반환합니까 아니면 자체 속성으로 재정의합니까? –

+0

원래대로 상속 된 속성의 프록시로 사용하기 때문에 기대 한대로 작동합니다. –

+0

감사합니다. Simon, 이것은 완벽하게 작동했습니다. 이제 설명을 했으니까요. 내가 할 수있는 한 빨리 답변을 수락합니다 :) – Dave

관련 문제