bmw318mt Ответов: 1

Расширьте функцию, чтобы принять список-C#


У меня есть следующая функция, которая принимает массив строк или объект массива. Я хочу расширить эту функцию таким образом, чтобы она также принимала список объектов и список строк.

Не могу найти способ, как это осуществить. Любая помощь будет оценена по достоинству.

public override void Run()
        {
            log.Trace(this, String.Format(LoggingConstants.StartCustomStep, this.GetType().Name));

            object[] realList;
            object rawList = (object)GetInput("List", typeof(object));
            object item = (object)GetInput("Item", typeof(object));

            if (rawList is object[])
            {
                realList = (object[])rawList;
            }
            else if (rawList is string)
            {
                realList = (rawList as string).Split(";".ToCharArray());
            }
            else
                throw new ArgumentException("Invalid List argument supplied.  Must be an array or string.");

            string status = StatusConstants.Fail;;
            if (item != null)
            {
                foreach (object listItem in realList)
                {
                    if (item.Equals(listItem))
                    {
                        status = StatusConstants.Pass;
                        break;
                    }
                }
            }

            SetOutput("Status", status);

            log.Trace(this, String.Format(LoggingConstants.EndCustomStep, this.GetType().Name));
        }


Что я уже пробовал:

ничего, что могло бы сработать. Однако кто-то посоветовал начать с проверки списка, а затем использовать else if для проверки массива

1 Ответов

Рейтинг:
9

Midi_Mick

Есть способ принять IEnumerable<string></string> аргумент. Как списки, так и массивы реализуют IEnumerable, и вы все еще можете перебирать элементы с помощью foreach.