小编ste*_*eve的帖子

调用没有反射的方法声明

我有一个基类(顺序)与一组子类(生产者,特殊订单,零件订单等).

只有其中一些子类实现了一个特定的接口(ITrackingCustomer),该接口具有单个方法声明(object getcustdetails()).

作为我的解决方案的一部分,我的所有订单都在中心位置处理,即任何crud方法都通过中心层.在这个中心层,我想做以下事情:

如果订单类型为ITrackingCustomer

然后调用方法getcustdetails()

我使用以下代码工作:

if (typeof(ITrackingCustomer).IsAssignableFrom(Order.GetType())) 
{ 
     MethodInfo theMethod = Order.GetType().GetMethod("getcustdetails"); 
     object y = theMethod.Invoke(Order, null); 
} 
Run Code Online (Sandbox Code Playgroud)

我对第一部分使用isassignable来感到满意,但是想对第二部分使用性能较低的方法(即使用invoke进行反射).

我的问题是:

有没有更有效的方法来执行此操作,因为我已经读过使用invoke命令是昂贵的.

c# reflection methods polymorphism interface-implementation

2
推荐指数
1
解决办法
395
查看次数