c# - una - La clase no puede ser incrustada. Utilice la interfaz aplicable en su lugar
interfaz asp net (3)
El segundo error es causado por el primero. La función Incrustar tipos de interoperabilidad solo admite interfaces incrustadas, no clases. Además de configurar esa opción en la referencia WIA a Falso y desplegar la biblioteca de interoperabilidad, también podría corregirlo de la siguiente manera:
WIA.CommonDialog wiaDiag = new WIA.CommonDialog();
No es intuitivo, pero se permite crear interfaces COM con el nuevo operador. Debe prefijar el nombre del espacio de nombres porque CommonDialog es ambiguo con la clase Winforms CommonDialog.
Estoy usando WIA para capturar una imagen desde el escáner hasta el formulario de Windows. Aquí está el código que estoy usando:
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");
}
Cuando intento ejecutar esta pequeña prueba, obtengo este error:
El tipo de interoperabilidad ''WIA.CommonDialogClass'' no se puede incrustar. Utilice la interfaz aplicable en su lugar.
Y esto:
''WIA.CommonDialogClass'' no contiene una definición para ''ShowAcquireImage'' y no se puede encontrar un método de extensión ''ShowAcquireImage'' que acepte un primer argumento del tipo ''WIA.CommonDialogClass'' (¿falta una directiva de uso o una referencia de ensamblaje?
Supongo que el segundo error está aumentando debido al primer error, ¿verdad?
Alguna sugerencia en como arreglar esto?
Simplemente, simplemente elige el ensamblaje de error en el Panel de soluciones / Referencias. Luego, presione Alt-Enter (Propiedades), busque "Incrustar tipo de interoperabilidad" y establezca su valor en "Falso" si es True Brgs!
http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307
Este error se produce porque el valor predeterminado es verdadero para la propiedad Incrustar tipos de interoperabilidad del ensamblado de interoperabilidad de la API de TestStand al que se hace referencia en el nuevo proyecto. Para resolver este error, cambie el valor de la propiedad Incrustar tipos de interoperabilidad a Falso siguiendo estos pasos:
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
Enlaces relacionados: KnowledgeBase 595FQJPI: ¿Puedo usar Visual Studio 2010 con TestStand y llamar a .NET Framework 4.0 Code Modules?