我有一个基类(订单)和一组子类(产品订单、特殊订单、零件订单等)。
这些子类中只有一些实现了具有单个方法声明(object getcustdetails())的特定接口(ITrackingCustomer)。
作为我的解决方案的一部分,我所有的订单都在一个中心位置处理,即任何 crud 方法都通过一个中心层。在这个中心层中,我想做以下事情:
如果订单是 ITrackingCustomer 类型
然后调用方法 getcustdetails()
我使用以下代码进行此工作:
if (typeof(ITrackingCustomer).IsAssignableFrom(Order.GetType()))
{
MethodInfo theMethod = Order.GetType().GetMethod("getcustdetails");
object y = theMethod.Invoke(Order, null);
}
我对使用 isassignablefrom 的第一部分感到满意,但想对第二部分使用性能强度较低的方法(即使用调用的反射)。
我的问题是:
有没有更有效的方法来做到这一点,因为我已经读到使用调用命令代价高昂。