Как Дразнить принтер в.NET?

В c # 6.0 Фильтры исключений улучшены для обработки исключений

try
{
    DoSomeHttpRequest();
}
catch (System.Web.HttpException e)
{
    switch (e.GetHttpCode())
    {
        case 400:
            WriteLine("Bad Request");
        case 500:
            WriteLine("Internal Server Error");
        default:
            WriteLine("Generic Error");
    }
}
5
задан Cody C 19 June 2009 в 17:20
поделиться

3 ответа

Не совсем уверен, что вы пытаетесь сделать, но это может помочь.

Чтобы смоделировать принтер (или любое другое внешнее устройство), вы должны инкапсулировать все вызовы принтера за интерфейсом, например

interface IPrinter 
{
   void Print(PrintData data);
}

Весь ваш другой код должен затем взаимодействовать с принтером через этот интерфейс.

Затем вы можете реализовать одну версию этого интерфейса, который взаимодействует с реальным принтером, и один поддельный объект, который вы можете использовать при тестировании и т. Д.

Поддельный объект можно легко смоделировать с помощью фреймворка для фиксации, например Rhino Mocks или Moq , или вы можете просто создать поддельный самостоятельно.

public class FakePrinter : IPrinter
{
   public void Print(PrintData data)
   {
      // Write to output window or something
   }
}

Обновление:

Все классы, использующие принтер, будут выглядеть примерно так:

public class ClassThatPrints
{
   private IPrinter _Printer;

   // Constructor used in production
   public ClassThatPrints() : this(new RealPrinter())
   {
   }

   // Constructor used when testing
   public ClassThatPrints(IPrinter printer)
   {
      _Printer = printer;
   }

   public void MethodThatPrints()
   {
      ...
      _Printer.Print(printData)
   }
}

Кстати, если вы используете контейнер IoC, вам не нужен первый конструктор. Затем вы вводите классы принтера с помощью инструмента IoC.

12
ответ дан 13 December 2019 в 05:41
поделиться

Вы всегда можете приостановить принтер для печати. ​​

Вы можете использовать принтер, который записывает в файл.

И вы можете написать собственное печатающее устройство.

0
ответ дан 13 December 2019 в 05:41
поделиться

Другое решение - написать себе LPD-приложение или просто отслеживать порт 9100 и иметь очередь печати Windows перенаправлять данные «себе» через 9100 или 515 (LPD).

0
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

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