2013-04-14 46 views
0

這可能是一個簡單的問題,但我正在努力。如何讓一個控件顯示c#中任何派生類的屬性?

我具有從基類

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

對我來說,這聽起來像一個'interface'的工作。可能是一個'抽象類',但更有可能是一個'接口' –

+0

@Mapper:我的道歉,'任何派生類'這裏的意思是A或B 例如。我正在尋找使用ObjectofA.Property_derived或ObjectofB.Property_derived,而無需做任何硬編碼的語句,如:A ObjectofA = new A() – Avais

回答

5

您需要做的是在基類中定義您的Property_derived,並將其作爲所有派生類的共享契約的一部分。多態性是繼承的一個屬性,它將調用派生的重寫屬性。但是請注意,這將會爲財產工作,而不是一個字段:

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