我正在查看采用对象栏的代码,该IBar
对象栏实际上是一个.net远程透明代理(RuntimeServices.IsTransparentProxy true),并且对于一组IFoo
类型,这样做:
var fooValue = bar as IFoo; // BTW, IFoo is always derived from IBar! But not sure if it matters
if (fooValue != null)
// and then eventually call some method on IFoo, we can imagine.
不幸的是,这种类型转换的性能不是很好,它似乎使用了大量的 CPU 时间。有什么更好的方法可以做到这一点?(不幸的是,因为它是你不能做的透明代理bar.GetType().GetInterfaces()...
)