2013-04-14 2 views
0

이것은 쉬운 질문 일지 모르지만 나는 그것에 고심하고있다.C#에서 파생 클래스의 속성을 표시하는 컨트롤을 만드는 방법은 무엇입니까?

I 유도 클래스의 속성을 표시해야 할 텍스트 상자를 가지고

class Base 
{ 
    public int BaseProperty; 
    ... 
} 

class A: Base 
{ 
public int Property_derived; 
... 
} 

Class B: Base 
{ 
public int Property_derived; 
... 
} 

가 지금은 UI 형태가 기본 클래스로부터 파생되는 두 개의 클래스가 (I 속성의 수와 데이터 유형을 확보 나는 그것이 같은 좀 더 일반적인 있도록 변경 어떻게

textbox1.text = objectA.Property_derived; 

: 모든 파생 클래스가 ) 같은 것 중 내가 좋아하는 뭔가를했을

textbox1.text = objecttypedoesntmatter.Property_derived; 

그래서 파생 된 클래스에 대해 동일한 사용자 인터페이스를 사용할 수 있어야합니다. 도움을 주시면 감사하겠습니다. 많은 감사

+0

을하지만 ... 오브젝트 유형은 * 문제 * 않습니다 :이하는 특성 아니 필드를 작동합니다,하지만합니다. 'A.Property_derived'는'A'에 선언되어 있으므로 액세스하려는 객체가 'A' 유형인지 확인해야합니다. 당신은 "어떤 파생 된 클래스"- * 무엇 * 파생 된 클래스라고 말합니까? 'A'의 하위 클래스? 예제를 제공해 줄 수 있습니까? –

+2

이것은 나에게 '인터페이스'에 대한 일처럼 들린다. 아마도'추상적 인 클래스'라기보다는'인터페이스'가능성이 높습니다. –

+0

@Mapper : 제 사과, '임의의 파생 된 클래스'는 A 나 B를 의미합니다. 예. ObjectofA.Property_derived 또는 ObjectofB.Property_derived를 ObjectofA = new A()와 같은 하드 코딩 된 구문을 사용하지 않고 사용하려고합니다. – Avais

답변

5

Property_derived를 기본 클래스로 정의하면 모든 파생 클래스의 공유 계약의 일부로 포함해야합니다. 상속 속성 인 다형성 (Polymorphism)은 파생 된 재정의 속성을 호출합니다.

class Base 
{ 
    public virtual int MyProperty {get { return 1;} } 
} 

class A: Base 
{ 
    public override int MyProperty { get { return 5; } } 
} 

class B: Base 
{ 
    public override int MyProperty { get { retun 7; } } 
} 
+1

내 첫 번째 질문에 stackoverflow, 응답을 사랑. 편집 : 고마워요 :) – Avais

+1

커뮤니티에 오신 것을 환영합니다. – Rohit

관련 문제