C#反射,使用不同参数类型的调用方法

时间:2018-08-03 15:32:04

标签: c# reflection .net-core system.reflection

我正在寻找一种使用反射的静态方法,该方法将Project和3个字符串作为参数,但是找不到实现此目的的方法。以下面为例

internal class PropertyActionProcessor
{
    public static async Task<Solution> ModifyNameInDto(Project project, string parentName, string oldValue, string newValue)
    {
        return new AdhocWorkspace().CurrentSolution;
    }
}

如果该方法仅使用了3个字符串,那么我可以使用下面的行成功调用“ ModifyNameInDto”。

solution = await (Task<Solution>)typeof(PropertyActionProcessor).GetMethod($"Modify{propertyName}InDto").Invoke(null, new[] { parentName, itemName, newValue });

但是,我也需要将其传递给Project,但是却收到错误消息“找不到隐式类型数组的最佳类型”。没有重载可以提供帮助,我无法在线找到解决方案,这有可能吗?如果可以的话,我该如何解决呢?

对于任何不熟悉Project对象的人,尝试传递int时都会发生相同的错误。

1 个答案:

答案 0 :(得分:1)

由于收到的参数具有不同的类型,因此出现错误“找不到隐式数组的最佳类型”错误。如果它们都是字符串,则暗示它是一个字符串数组。但是,根据您的情况,由于存在多种不同的类型,因此需要给它一个提示。

例如-如果您提供new object[] { new Project(), parentName, itemName, newValue },则应避免编译错误。

相关问题