public string GetDisplayName(MethodInfo methodInfo, object[] data) { if (DisplayMethod == null) { if (string.IsNullOrEmpty(DisplayMethodName)) { return(null); } DisplayMethod = MethodClass.GetMethod(DisplayMethodName, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); if (DisplayMethodName == null) { throw new InvalidOperationException($"could not resolve test data display method:" + $" class=[{MethodClass.FullName}]" + $" method=[{DisplayMethodName}]"); } } if (TestMethod == null) { TestMethod = methodInfo; } object[] methodParams = null; var paramInfos = DisplayMethod.GetParameters(); var paramLen = paramInfos.Length; if (paramLen == 2 && paramInfos[1].ParameterType == typeof(object[])) { methodParams = new object[] { this, data }; } else if (paramLen > 1) { methodParams = new object[data.Length + 1]; methodParams[0] = this; Array.Copy(data, 0, methodParams, 1, data.Length); } else if (paramLen > 0) { methodParams = new object[] { this }; } return((string)DisplayMethod.Invoke(null, methodParams)); }