2011-04-27 3 views
3

내가 달성하고자하는 것은 비주얼 스튜디오에 대해 불평 아래이 같은, 내가 그것을 달성하는 방법을 모른다 :제네릭 형식 T에서 제네릭 클래스를 상속 할 수 있습니까? MyClass에 <T>처럼 : T

public abstract class My_BaseControl<T> : T, IRightBasedUsability 
     where T : System.Web.UI.WebControls.WebControl 
{ 

    // Some methods that I want to have for all 
    //the extended asp.net controls along my application 
    //which implements IRightBasedUsability 

} 

답변

3

아마도이 경우 C# 확장 방법이 문제를 해결하는 방법입니다.

@see http://msdn.microsoft.com/en-us/library/bb383977.aspx

에릭 드 Carufel는 범위를 관리하기 위해 확장 방법과 방법에 대한 몇 가지 흥미로운 기사를 썼다 : 이 http://blog.decarufel.net/2009/02/extension-methods-series-managing-scope.html

+0

나는 그 생각을 좋아한다! 나는 너에게 알리려고 노력할 것이다;) 고마워! – pencilCake

+1

+1 예; 이제는 연필을 안다. 케잌의 의도는 확실히 갈 길이 멀어 보인다! 나는 확장 방법을 좋아한다. 그들은 일종의 다중 상속을 사용할 수 있습니다 (속성/필드가 아님) –

+0

감사합니다 KimCM! 나는 너의 충고로 내 문제를 해결했다. – pencilCake

1

당신은 비에서 상속 할 수 없습니다 전혀 존재하지 않는 유형, 아니요. 그것이 여러분이 보여준 코드로 수행 할 것입니다.

당신이 얻을 수있는 가장 가까운 것은 where T 절의 클래스에서 상속받는 것입니다. 어쨌든 효과는 크게 다를 수 없습니다.

+1

은 기본적으로 T는 버튼 또는 CheckBox의 또는 드롭 다운 등이 될 수를 그리고 난을 추가 할 EnabledByRightName, VisibleByRightName과 같은 속성을 통해 제공되는 일부 rightNames를 기반으로 활성화/비활성화 할 수있는 기능 – pencilCake

+0

또한 CheckBox 및 RadioButton의 하위 클래스를 만들려고합니다. 버튼 기반을 상속 할 수 없습니다. CheckBox 또는 RadioButton이 아니기 때문에 단추 기반이됩니다. 코드를 두 번 작성하거나 헬퍼 메소드, 절름발이로 추상화해야합니다. – BrainSlugs83

관련 문제