我正在寻找一种使用反射的静态方法,该方法将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时都会发生相同的错误。
答案 0 :(得分:1)
由于收到的参数具有不同的类型,因此出现错误“找不到隐式数组的最佳类型”错误。如果它们都是字符串,则暗示它是一个字符串数组。但是,根据您的情况,由于存在多种不同的类型,因此需要给它一个提示。
例如-如果您提供new object[] { new Project(), parentName, itemName, newValue }
,则应避免编译错误。