Библиотека классов охраны.NET?

Тип БД (SQL, No-SQL, Graph и т. Д.) Должен в первую очередь зависеть от вашей рабочей нагрузки и варианта использования. Как только вы решите, вы можете оценить продукты в этой категории. Если вы привязаны к AWS и вам нужно выбирать между предложениями по базам данных AWS, я все равно рекомендовал бы тот же подход, а затем работал в обратном направлении для оптимизации затрат. Почти все дБ-предложения в AWS имеют несколько конфигураций с ценовыми диапазонами от бесплатных до действительно дорогих.

Дайте мне знать, если вам нужна дополнительная помощь!

16
задан BozoJoe 25 May 2016 в 03:58
поделиться

5 ответов

Имеется CuttingEdge.Conditions . Пример использования со страницы:

public ICollection GetData(Nullable<int> id, string xml, ICollection col)
{
    // Check all preconditions:
    id.Requires("id")
        .IsNotNull()          // throws ArgumentNullException on failure
        .IsInRange(1, 999)    // ArgumentOutOfRangeException on failure
        .IsNotEqualTo(128);   // throws ArgumentException on failure

    xml.Requires("xml")
        .StartsWith("<data>") // throws ArgumentException on failure
        .EndsWith("</data>"); // throws ArgumentException on failure

    col.Requires("col")
        .IsNotNull()          // throws ArgumentNullException on failure
        .IsEmpty();           // throws ArgumentException on failure

    // Do some work

    // Example: Call a method that should not return null
    object result = BuildResults(xml, col);

    // Check all postconditions:
    result.Ensures("result")
        .IsOfType(typeof(ICollection)); // throws PostconditionException on failure

    return (ICollection)result;
}

Еще один хороший подход, который не упакован в библиотеку, но легко может быть, в блоге Paint.Net :

public static void Copy<T>(T[] dst, long dstOffset, T[] src, long srcOffset, long length)
{
    Validate.Begin()
            .IsNotNull(dst, "dst")
            .IsNotNull(src, "src")
            .Check()
            .IsPositive(length)
            .IsIndexInRange(dst, dstOffset, "dstOffset")
            .IsIndexInRange(dst, dstOffset + length, "dstOffset + length")
            .IsIndexInRange(src, srcOffset, "srcOffset")
            .IsIndexInRange(src, srcOffset + length, "srcOffset + length")
            .Check();

    for (int di = dstOffset; di < dstOffset + length; ++di)
        dst[di] = src[di - dstOffset + srcOffset];
}

Я использую его в моем проект , и вы можете позаимствовать код оттуда.

12
ответ дан 30 November 2019 в 21:46
поделиться

Учитывая Контракты Кода Microsoft, выпускающие.NET 4.0, я попытался бы найти ту, которая главным образом совместима, если возможный - и в противном случае пишут это самостоятельно. Тот путь, когда Вы обновите до.NET 4.0 (в конечном счете) миграция, будет легче.

8
ответ дан 30 November 2019 в 21:46
поделиться

Существует несколько методов, которые можно использовать.

Мой фаворит использует Аспектно-ориентированное программирование. Выезд PostSharp.

Можно также смотреть на Spec#, расширение C#

В 4,0, у Вас будет полнофункциональная библиотека контракта.

Наконец, мой коллега придумал довольно полезную защитную библиотеку: http://blueonionsoftware.com/blog.aspx?p=ca49cb62-7ea2-43c5-96aa-91d11774fb48

2
ответ дан 30 November 2019 в 21:46
поделиться

Я не знаю ни о ком, которые коммерчески доступны. Существует некоторая поддержка этого типа кода в Библиотеке Предприятия шаблонов и методов. Существует также много проектов с открытым исходным кодом, которые, кажется, делают это также (в различных степенях) на CodePlex: http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=validation.

Большую часть времени эти типы библиотек заканчивают тем, что были пользовательские записанный и остаются внутренними к компании, которая использует их.

Существует поддержка, прибывающая в.NET 4.0 для обеспечения механизмов, чтобы сделать этот Код использования Контракты, которые основаны на Spec#.

1
ответ дан 30 November 2019 в 21:46
поделиться

Недавно я написал сообщение о классах охранников (тоже не нашел никакой информации): http://ajdotnet.wordpress.com/2009/08/01/posting-guards- guard-classes-объяснено /

Я также опубликовал соответствующую реализацию класса Guard (не стесняйтесь использовать этот код как есть или настроить его под свои нужды): ajdotnet.wordpress.com/guard-class/

Что касается взаимосвязи между классами Guard и Контрактом кода в .NET 4.0 (преемник Spec #), прочтите следующий пост: www.leading-edge-dev.de/?p=438

( извините за фрагментированные ссылки, на сайте разрешена только одна ссылка ...)

HIH, AJ.NET

1
ответ дан 30 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

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