Существует ли стандартная платформа для проверки параметра.NET, которая использует атрибуты?

Решение - метки должны быть списком целых чисел, и вы должны использовать numpy.array(labels) (или np.array(labels)).

Пример фиктивной проверки отсутствия ошибок:

labels=[0]*len(faces)
face_recognizer.train(faces, np.array(labels))

Я не нашел никакой документации по перекодировке лиц openCV на python, поэтому я начал просматривать документацию и примеры по c ++. И благодаря документации эта библиотека использует labels вход для train как std::vector. Пример cpp , предоставленный openCV docs, также использует vector labels. И так, в библиотеке даже есть ошибка для не целочисленного ввода .

8
задан Eric Schoonover 26 September 2008 в 07:23
поделиться

5 ответов

Контракты Microsoft Code , которые являются частью .NET Framework начиная с 4.0 CTP и доступны для более ранних версий .NET Framework как автономный пакет, позволяют указывать допущения при кодировании. Это включает в себя определение предварительных условий, которые могут проверять параметры.

Пример использования для проверки параметров будет (скопирован из документации по контрактам кода ):

public Rational(int numerator, int denominator)
{
    Contract.Requires(denominator ! = 0);

    this.numerator = numerator;
    this.denominator = denominator;
}

Преимущество использования контрактов кода в том, что это библиотека, которая будет частью будущих выпусков .NET Framework, поэтому рано или поздно у вас будет на одну зависимость меньше в вашем приложении.

РЕДАКТИРОВАТЬ: Только что заметил, что вы специально запрашиваете библиотеку, которая использует атрибуты для проверки аргументов. .. что Code Contracts нет. Причина, по которой Code Contracts не использует атрибуты, указана в их FAQ :

Преимущество использования настраиваемых атрибутов в том, что они вообще не влияют на код. Однако преимущества использования вызовов методов намного перевешивают кажущийся естественным первый выбор атрибутов:

Поддержка времени выполнения: Независимо от двоичного перезаписывающего устройства, контракты, выраженные с помощью атрибутов, не могут быть реализованы во время выполнения. Это означает, что если есть предварительные условия (или другие контракты), которые вы хотите применять во время выполнения, вам нужно либо продублировать контракты в коде, либо включить двоичный перезаписчик в процесс сборки. Contract.RequiresAlways служит как декларативным контрактом, так и проверкой во время выполнения.

Необходимость синтаксического анализа: Поскольку значения, которые могут использоваться с настраиваемыми атрибутами, ограничены, условия в конечном итоге кодируются в виде строк. Это требует определения нового языка, подходящего для всех исходных языков, требует, чтобы строки анализировались, дублируя все функциональные возможности, которыми уже обладает компилятор.

Отсутствие поддержки IDE: Выражается в виде строк, поддержки нет для Intellisense, проверки типов или рефакторинга, все из которых доступны для разработки контрактов в виде кода.

4
ответ дан 5 December 2019 в 10:45
поделиться

Библиотека Microsoft Enterprise имеет Microsoft. Методы. EnterpriseLibrary. Библиотека/пространство имен Validation, которая позволяет проверку с помощью атрибутов.

7
ответ дан 5 December 2019 в 10:45
поделиться

Динамические Данные для ASP.NET (и ASP.NET MVC) позволяют Вам сделать проверку для свойств модели с помощью атрибутов.

1
ответ дан 5 December 2019 в 10:45
поделиться

Вы могли также использовать пострезкий и реализовать свои собственные атрибуты для проверки.

1
ответ дан 5 December 2019 в 10:45
поделиться
1
ответ дан 5 December 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: