小编Nik*_*ani的帖子

在C#中使用反射调用方法时,如何对参数进行自动类型转换?

我需要使用C#通过反射调用类型的方法.

在运行时,我的数据将包含一个包含名称/值对的Dictionary.字典中的名称将对应于我将调用的方法上的参数名称.此外,在运行时,我将有一个任意的程序集限定类型名称和方法名称.在设计时,我不知道类型和方法,除了该方法将接受int,string,DateTime,bool,int [],string [],DateTime []或bool类型的可变数量的参数[].

我没有问题,我可以使用反射创建该类型的实例并调用该方法.当我调用时,我不得不将字典中的字符串值转换为方法所需的相应类型:

someMethodInfo.Invoke(instance, new [] { ... })
Run Code Online (Sandbox Code Playgroud)

我知道我需要通过MethodInfo.GetParameters()枚举并为每个参数执行类型转换.我想弄清楚的是如何做到这一点,理想情况下,如何有效地做到这一点.

到目前为止,我的研究涉及深入研究MVC源代码,因为它在将表单值传递给ActionMethod时做了类似的事情.我找到了ActionMethodDispatcher,但它使用了LINQ表达式,我对此并不熟悉.

我也在SO上看了类似的问题,但没有找到任何能回答我问题的问题.

我欢迎任何解决方案的指示.

c# reflection dynamic methodinfo parameterinfo

8
推荐指数
1
解决办法
3404
查看次数

标签 统计

c# ×1

dynamic ×1

methodinfo ×1

parameterinfo ×1

reflection ×1