Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从实现传入接口的对象的父类中获取变量_C#_Inheritance_Interface - Fatal编程技术网

C# 从实现传入接口的对象的父类中获取变量

C# 从实现传入接口的对象的父类中获取变量,c#,inheritance,interface,C#,Inheritance,Interface,我有一个实现接口并从另一个类继承的对象。但是对于函数,我只能传入项的接口。是否可以从父对象获取变量,如果不存在,是否可以获取null public class ProductStamp { public int qty; } public class TrolleyItem : ProductStamp, ITrolleyItem { } private void foo(ITrolleyItem trolleyItem) { trolley

我有一个实现接口并从另一个类继承的对象。但是对于函数,我只能传入项的接口。是否可以从父对象获取变量,如果不存在,是否可以获取null

  public class ProductStamp
  {
   public int qty;
  }

  public class TrolleyItem : ProductStamp, ITrolleyItem
  {

  }

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

  }
很抱歉让人困惑。我只是想知道这是否可能,如果可能的话,我怎样才能最好地去做

注意:我简化了情况,但是这些类中的每一个都位于非常独立的位置,其他附件依赖于它们。由于它的结构,我不能简单地传入foo(无轨电车项目无轨电车项目)

先谢谢你

是否可以从父对象获取变量,如果不存在,是否可以获取null

是的,您需要强制转换i,如果强制转换成功,您可以访问变量:

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
     }
}

您可以使用
var ps=trolleyItem将is转换为ProductStamp
并检查它是否不为null。“是否可以从父对象获取变量”——当然可以。但是写这样的代码真的不是个好主意。如果您只能传递接口类型,那么应该有一个很好的理由。如果有,那么接收接口对象的代码就不需要知道该对象还实现了什么。