2017-08-25 10 views
-1

私はインターフェイスを実装し、別のクラスから継承するオブジェクトを持っています。しかし、関数の場合、私はその項目のインターフェースにのみ渡すことができます。親オブジェクトから変数を取得することは可能ですか?そうでない場合はnullを返しますか?渡されるインターフェイスを実装するオブジェクトの親クラスから変数を取得

public class ProductStamp 
    { 
    public int qty; 
    } 

    public class TrolleyItem : ProductStamp, ITrolleyItem 
    { 

    } 

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

    } 

ご迷惑をおかけして申し訳ありません。私はこれが可能かどうかを知りたいのであれば、どうすれば最善を尽くすことができますか?

注:私は状況を簡略化しましたが、これらのクラスはそれぞれ非常に離れた場所にあり、他の添付ファイルがそれに依存しています。それが構成されているか、私は単にfooの中で渡すことはできません(TrolleyItem trolleyItem)へ

は、事前に

+0

ProductStampとして 'VAR PS = trolleyItemであり;'とかどうかを確認それはnullではありません。 – FCin

+1

_ "親オブジェクトから変数を取得することは可能ですか?" - もちろんです。しかし、そのようなコードを書くことは本当に悪い考えです。インターフェイスの型だけを渡すことができれば、その理由があるはずです。もし存在すれば、インタフェースオブジェクトを受け取るコードは、オブジェクトが実装している他のものを知る必要はないはずです。 –

答えて

0

をありがとう、彼らが存在しない場合は、親オブジェクトまたはnullから変数を取得することが可能ですか?

はい、あなたは私をキャストする必要があるだろう、とキャストがあなたが変数にアクセスすることができます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 
    } 
} 
関連する問題