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

我正在寻找使用反射调用静态方法,该方法将项目和 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 对象的任何人,尝试传递 int 时都会发生同样的错误。


守着星空守着你
浏览 333回答 1
1回答

MYYA

您收到错误“找不到隐式类型数组的最佳类型”,因为您传入的参数具有不同的类型。如果它们都是字符串,则暗示它是一个字符串数组。但是在您的情况下,由于有多种不同的类型,您需要给它一个提示。例如 - 如果您提供new object[] { new Project(), parentName, itemName, newValue },这应该避免编译错误。
打开App,查看更多内容
随时随地看视频慕课网APP