2017-08-25 45 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 
    } 
}