2017-08-25 18 views
-1

我有一個實現接口並從另一個類繼承的對象。但是對於一個功能,我只能通過該項目的界面。是否有可能從父對象獲取變量,或者如果它們不在那裏,則爲null?從實現正在傳遞的接口的對象的父類中獲取變量

public class ProductStamp 
    { 
    public int qty; 
    } 

    public class TrolleyItem : ProductStamp, ITrolleyItem 
    { 

    } 

    private void foo(ITrolleyItem trolleyItem) 
    { 
    trolleyItem.qty; 

    } 

對不起,讓人困惑的情況。我只是想知道這是否可能,如果可以,我該如何最好地去做。

注意:我簡化了這種情況,但這些類中的每一個都與其他依賴它們的附件處於非常不同的位置。由於它的結構,我不能簡單地通過在富(TrolleyItem trolleyItem)

預先感謝您

+0

你可以投與'VAR PS = trolleyItem爲ProductStamp;'和檢查它不是null。 – FCin

+1

_「是否可以從父對象獲取變量」_ - 當然。但編寫這樣的代碼會是一個非常糟糕的主意。如果只能通過接口類型,應該有一個很好的理由。如果存在,接收對象的代碼不需要知道該對象實現了什麼,這是一個很好的理由。 –

回答

0

是否有可能從父對象得到一個變量或爲空,如果它們不存在?

是的,你需要投我,如果轉換爲sucessfull你可以訪問變量:

private void foo(ITrolleyItem trolleyItem) 
{ 
    TrolleyItem temp = trolleyItem as TrolleyItem 

    // this checks whether the cast has worked. 
    // if true you have now a real object of type TrolleyItem and it has the parent variable 
    if(temp != null) 
    { 
     temp.qty 
    } 
}