tag:blogger.com,1999:blog-1404511988137688219.post6818862248266034791..comments2024-03-07T14:58:14.696+08:00Comments on KingKong Bruce記事: Reflection-使用反射執行方法的7種方式陳傳興http://www.blogger.com/profile/14720896380519694038noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-1404511988137688219.post-15284400164821241252021-04-27T10:46:37.060+08:002021-04-27T10:46:37.060+08:00我的method name; type 都是動態的(from string), 所以最後只能用Dyn...我的method name; type 都是動態的(from string), 所以最後只能用DynamicInvoke , 這有點慢, 請問有解法嗎? 謝謝<br /><br />var methodContent = JsonConvert.DeserializeObject(msg.CMD);<br /> var serviceType = Type.GetType(Type.GetType(methodContent.ServiceTypeName).AssemblyQualifiedName);<br /> object service = serviceProvider.GetRequiredService(serviceType);<br /><br /> var fooMethod = service.GetType().GetMethod(methodContent.MethodName);<br /><br /> if (methodContent.IsGenericMethod)<br /> {<br /> var genType = Type.GetType(Type.GetType(methodContent.MethodGeneircTypeName).AssemblyQualifiedName);<br /> fooMethod = fooMethod.MakeGenericMethod(genType);<br /> }<br /><br /><br /> var inputType = Type.GetType(Type.GetType(methodContent.MethodInputParamTypeName).AssemblyQualifiedName);<br /><br /> Type delegateType;<br /> Type outputType;<br /> if (methodContent.isVoid)<br /> {<br /> delegateType = typeof(Action<>).MakeGenericType(inputType);<br /> }<br /> else<br /> {<br /> outputType = Type.GetType(Type.GetType(methodContent.MethodOutputParamTypeName).AssemblyQualifiedName);<br /> delegateType = typeof(Func<,>).MakeGenericType(inputType, outputType);<br /> }<br /><br /> var fooFunc = Delegate.CreateDelegate(delegateType, service, fooMethod);<br /><br /> var output = fooFunc.DynamicInvoke(JsonConvert.DeserializeObject(msg.BDY, inputType));Anonymoushttps://www.blogger.com/profile/05892145304948041046noreply@blogger.comtag:blogger.com,1999:blog-1404511988137688219.post-14137178034007763442021-04-27T09:49:54.052+08:002021-04-27T09:49:54.052+08:00謝謝謝謝Anonymoushttps://www.blogger.com/profile/05892145304948041046noreply@blogger.comtag:blogger.com,1999:blog-1404511988137688219.post-8908038435660970202021-04-26T21:46:59.811+08:002021-04-26T21:46:59.811+08:00沒有回傳值,不是Action<>嗎!沒有回傳值,不是Action<>嗎!陳傳興https://www.blogger.com/profile/14720896380519694038noreply@blogger.comtag:blogger.com,1999:blog-1404511988137688219.post-26986716844035282882021-04-26T16:13:36.842+08:002021-04-26T16:13:36.842+08:00請問WAY6: 建立 EXPRESSION 並進行方法呼叫 如果是 void 沒有回傳資料 要怎麼修...請問WAY6: 建立 EXPRESSION 並進行方法呼叫 如果是 void 沒有回傳資料 要怎麼修改呢? 謝謝Anonymoushttps://www.blogger.com/profile/05892145304948041046noreply@blogger.com