如何利用对象参数列表确定C#反射中的方法签名

如何利用对象参数列表确定C#反射中的方法签名,c#,.net,reflection,C#,.net,Reflection,我有一个C#reflection问题,我不确定如何实现 我需要允许访问我正在开发的产品的XML配置文件中的字符串方法 例如: <someElement field="someField.Substring(5,10)"> 我可以很容易地收集方法-Substring-和参数-5和10 如果有一个重载方法具有相同数量的参数,但类型不同,当我不能确定输入参数类型时,如何知道使用哪一个 目前,我可以尝试将参数转换为签名中的类型,如果通过,则执行该方法。如果他们转换失败,那么我肯定不会使

我有一个C#reflection问题,我不确定如何实现

我需要允许访问我正在开发的产品的XML配置文件中的字符串方法

例如:

<someElement field="someField.Substring(5,10)">

我可以很容易地收集方法-Substring-和参数-5和10

如果有一个重载方法具有相同数量的参数,但类型不同,当我不能确定输入参数类型时,如何知道使用哪一个

目前,我可以尝试将参数转换为签名中的类型,如果通过,则执行该方法。如果他们转换失败,那么我肯定不会使用这种方法。如果两种方法都成功了,那么我就输了

另一个选项是强制用户在配置文件中将类型置于参数之前,如:

<someElement field="someField.Substring(int 5, int 10)">

这就是我认为我必须要做的,除非我错过了反射的某些方面,这将使这变得更容易(我没有太多使用反射的经验)

编辑:总体目标是允许我公司的专业服务部门(将为新客户执行产品部署)能够根据客户的需求调整客户提供的输入。对于一些客户,我的公司将需要基于多个因素操纵输入数据(在为该客户配置系统之前,以未知的方式)。这可能是因为客户机在部署产品后更改了其数据结构或数据格式。或者,这可能是因为在一个安装中安装了多个客户端,我们需要区分两个具有相似名称的客户端等


我需要创建一种方法来处理大量情况,我认为这将提供最大的灵活性。

afaik,方法重载解析是编译器中更高级的方法之一,因此我认为第二种方法会更容易,或者您可以尝试使用roselyn进行运行时编译,但我没有这方面的经验。但是,如果您在这里解释了您试图实现的总体目标,那么可能有一种总体上比在xml文件中编写代码更好的方法。您的意图是只允许对一个类型使用一个方法(如示例中所示),还是需要对复杂表达式求值?使用addin框架来执行数据转换可能会更好。我的目的是允许部署产品的人员可以使用所有字符串方法。基本上,它们需要的是字符串操作能力,而不是复杂的计算。好吧,方法重载解析是编译器中更高级的方法之一,所以我认为你的第二种方法会更容易,或者你可以尝试使用roselyn进行一些运行时编译,但我没有这方面的经验。但是,如果您在这里解释了您试图实现的总体目标,那么可能有一种总体上比在xml文件中编写代码更好的方法。您的意图是只允许对一个类型使用一个方法(如示例中所示),还是需要对复杂表达式求值?使用addin框架来执行数据转换可能会更好。我的目的是允许部署产品的人员可以使用所有字符串方法。基本上,他们需要字符串操作能力,而不是复杂的计算。