Как Алексей напоминает мне в комментариях, это должна быть пара перегрузок методов, без приведения ни к одному из них:
public static bool security(string UserID, string Action, string[] details)
public static bool security(string UserID, string Action, string details)
Вы должны написать это таким образом, если вам позволено.
В имеющейся версии, если вам нужно, чтобы это работало, вам нужно разыграть ее.Вы не можете обрабатывать ссылку на объект типа напрямую как строку или массив, даже если фактический объект, на который он ссылается, фактически является одной из этих вещей.Вы должны явно указать компилятору, что вы хотите.В этом случае мы также хотим спросить во время выполнения, каков фактический тип ссылочного объекта.
Я не знаю, какой ваш массив может быть массивом из , но любой массив не является универсальным IEnumerable, поэтому мы будем его использовать.
// Check for string first, because String is IEnumerable.
if (Details is String s)
{
strDetails = s;
}
else if (Details is System.Collections.IEnumerable ienum)
{
int i = 0;
foreach (var s in ienum)
{
strDetails += "Detail " + i++ + ": " + s + "\n";
}
}