Класс не может быть встроен. Вместо этого используйте применимый интерфейс

StackOverflow https://stackoverflow.com/questions/4219605

  •  26-09-2019
  •  | 
  •  

Вопрос

Я использую WIA, чтобы запечатлеть образ Fron сканера к форме Windows. Вот код, который я использую:

private void button2_Click(object sender, EventArgs e)
{
    const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
    CommonDialogClass wiaDiag = new CommonDialogClass();
    WIA.ImageFile wiaImage = null;

    wiaImage = wiaDiag.ShowAcquireImage(
            WiaDeviceType.UnspecifiedDeviceType,
            WiaImageIntent.GrayscaleIntent,
            WiaImageBias.MaximizeQuality,
            wiaFormatJPEG, true, true, false);

    WIA.Vector vector = wiaImage.FileData;

    Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData()));
    i.Save(@"D:\prueba1.jpeg");
}

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

Включа типа «Wia.comMondialogClass» не может быть встроена. Вместо этого используйте применимый интерфейс.

И это:

«WIA.comMondialogClass» не содержит определения для «Showacquireimage», и никакого метода расширения «ShowacquireImage» может быть найден первого аргумента типа «WIA.comMondialogClass» (вы отсутствуете на директиру с использованием или ссылкой на сборку?

Я предполагаю, что вторая ошибка возникает из-за первой ошибки, верно?

Любые предложения о том, как это исправить?

Это было полезно?

Решение

2-я ошибка вызвана первым. Функция типов встроенного взаимодействия поддерживает только интерфейсы вложения, а не классы. Кроме того, чтобы просто установить этот параметр на ссылку WIA на false и разверните библиотеку Interop, вы также можете исправить это:

 WIA.CommonDialog wiaDiag = new WIA.CommonDialog();

Неудивительно, но создание коминфиции с новый Оператор разрешен. Вам необходимо префикнуть имя пространства имен, потому что Commondialog. неоднозначен с пробегом Commondialog Class.

Другие советы

http://digital.ni.com/public.nsf/allkb/4ea929b78b5718238625789d0071f307.

Эта ошибка возникает из-за того, что значение по умолчанию верно для спецификации встроенных типов встроенных типов API Teststance Assistance, упомянутой в новом проекте. Чтобы устранить эту ошибку, измените значение свойства встроенных типов Interop в FALSE, выполнив следующие действия:

Select the TestStand Interop Assembly reference in the references section of your project in the Solution Explorer.
Find the Embed Interop Types property in the Property Browser, and change the value to False

Связанные ссылки: знаниеBASE 595FQJPI: Могу ли я использовать Visual Studio 2010 с Teststand и Call .NET Framework 4.0 Code Modules?

Просто вы просто выбираете сборку ошибки на панель / ссылки на решение. Затем нажмите Alt-enter (Properties), найдите «Включить тип Interop» и установите его значение «False», если это правда BRGS!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top