ASP.NET MVC / C # - приведение типа к массиву в пользовательском обязательном атрибуте проверки - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь создать пользовательский обязательный атрибут проверки, который сможет принять массив 1d любого размера и убедиться, что хотя бы один элемент не является пустой или пустой строкой. У меня возникли проблемы с выяснением, как превратить входящий универсальный объект в массив. Вот что у меня есть:

public class RequiredArrayAttribute : RequiredAttribute
{
    public override bool IsValid(object value)
    {
        var valueType = value.GetType();

        if (!valueType.IsArray)
        {
            return false;
        }

        bool hasValue = false;

        foreach (var item in value)
        {
            /* if (item != null/empty)
             * {
             *    hasValue = true;
             * }
            */
        }

        return hasValue;
    }
}

Хотя мой конкретный вариант использования в этом случае будет касаться string[], я хотел бы сохранить атрибут как можно более универсальным для будущего использования в других проектах. Есть идеи, как поступить?

EDIT:

Мне нужно сделать что-то вроде:

foreach (var item in (valueType[])value)
{
    // ...
}

Но я не уверен, как / если возможно динамически привести к массиву, подобному этому.

1 Ответ

0 голосов
/ 24 августа 2011

я считаю, что вам нужно следующее: общая схема вашего цикла: проверьте ответ ниже

Синтаксис C # - Пример лямбда-выражения - ForEach () поверх общего списка

В ролях T:

вы можете создать отдельный класс, который будет представлять T

например: открытый класс Foo { открытая строка Boo {get; set;} }

и после того, как вы поместите его в список List = новый список () и т.д .:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...