我必须做反射和后期绑定,所以我不知道是否有办法加快速度。 以为我会给它一个镜头。InvokeMember非常缓慢,无论如何要避免这种情况?
这段代码大约需要15秒才能完成,但速度太慢,但看到我需要如何读取元数据。
private static object InvokeCall(Type HostObjectType, Object HostObject, CallType callType, string PropertyOrMethodName, object[] args)
{
if (callType == CallType.Method)
{
return MyObjectType.InvokeMember(PropertyOrMethodName,System.Reflection.BindingFlags.InvokeMethod, null, myObject, args);
}
}
A *单*调用InvokeMember绝对*不*花费15秒的反射开销。你是否反复调用'InvokeCall'?否则,到目前为止,最可能的解释是,无论你实际调用什么方法都需要一段时间,你应该调查那边的问题。 – 2010-10-18 18:14:07
这种特殊方法在早期绑定时执行的速度有多慢? – 2010-10-18 18:14:46
@Kirk啊,是的,它后来调用了一个相当大的方法,虽然它不会让我介入,我会再看一点 – Spooks 2010-10-18 18:22:12