C# 从实现传入接口的对象的父类中获取变量
我有一个实现接口并从另一个类继承的对象。但是对于函数,我只能传入项的接口。是否可以从父对象获取变量,如果不存在,是否可以获取nullC# 从实现传入接口的对象的父类中获取变量,c#,inheritance,interface,C#,Inheritance,Interface,我有一个实现接口并从另一个类继承的对象。但是对于函数,我只能传入项的接口。是否可以从父对象获取变量,如果不存在,是否可以获取null public class ProductStamp { public int qty; } public class TrolleyItem : ProductStamp, ITrolleyItem { } private void foo(ITrolleyItem trolleyItem) { trolley
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。“是否可以从父对象获取变量”——当然可以。但是写这样的代码真的不是个好主意。如果您只能传递接口类型,那么应该有一个很好的理由。如果有,那么接收接口对象的代码就不需要知道该对象还实现了什么。