Я хочу вызвать метод по строке. Я прошел довольно далеко, пока мой код не вернул parameter count mismatch
.
Я знаю, что ни мои classInstance
, ни мои method
не равны null
. Я прочитал, что вам нужно поместить ваш Parameterarray в другой массив.
Кажется, это просто идеально, но тогда это дает мне эту ошибку. class
метода расположен в Modules.Achievements.Achieve
. methodname
- это переменная строка, которая будет равна существующему методу в классе Achieve
.
string userid = Modules.Users.GetCreatorId();
var type = typeof(Modules.Achievements.Achieve);
MethodInfo method = type.GetMethod(methodname);
try
{
if ( method == null )
return;
object classInstance = Activator.CreateInstance(type, null);
if ( classInstance == null )
return;
object[] parametersArray = new object[] { userid };
var result = (Boolean)method.Invoke(classInstance,
new object[] { parametersArray });
if ( result )
{
Console.WriteLine("succeeded.");
return;
}
Console.WriteLine("incorrect steamid.");
return;
}
catch ( Exception e )
{
Console.WriteLine($"error:{e.Message}");
}
Console.WriteLine("failed.");
return;
Мой метод должен вернуть Boolean
, если что-то не удалось или нет. Метод имеет только один параметр (String). В этом случае это идентификатор пользователя, который входит в метод в качестве параметра.
Вместо того, чтобы что-либо возвращать, он обнаруживает ошибку, прежде чем что-то возвращать. Ошибка от method.Invoke(classInstance, new object[] { parametersArray });
.
Я погуглил parameter count mismatch
на Reflection, но все решения, которые я видел, все еще дают ту же ошибку. Что я могу сделать лучше всего?