VB.NET

2008-12-02 23 views
7

cuando solicito la etiqueta por encima de mis métodos consigo el errorVB.NET

Tipo System.Runtime.CompilerServices.Extension no está definido.

Aquí es mi muestra

<System.Runtime.CompilerServices.Extension()> _ 
    Public Sub test() 

End Sub 

dónde voy mal?

Editar ~ Directamente desde el artículo de MSDN here, el mismo error

 
Imports System.Runtime.CompilerServices 

Module StringExtensions 
    _ 
    Public Sub Print(ByVal aString As String) 
     Console.WriteLine(aString) 
    End Sub 

End Module 

Estoy utilizando Visual Studio 2008 y 3.5 Marco en mi proyecto.

Solución ~ El proyecto estaba en 2.0 Framework. Cambió a 3.5 y funciona.

Respuesta

8

¿A qué versión de .NET Framework apunta el IDE?

Además, a primera vista, la sintaxis del método de extensión parece incorrecta.

El código está incompleto. Coloque las instrucciones de uso en el ejemplo para que cualquiera pueda usar el código y compilarlo para reproducir el error.

+0

Era 2.0. Tuve que cambiar a 3.5 y funciona. –

+0

Extensiones se introdujo en .NET 3, por lo que no es compatible con un proyecto .NET 2.X. – awe

+0

Con un poco de trabajo extra 2.0 admitirá los métodos de extensión. Tengo una compilación dll de VS 2010 para .Net 2.0 Framework. Seguí los siguientes dos enlaces para obtener información: http://www.codeproject.com/Articles/31260/Extension-Methods-in-VB-NET Compruebe hacia el final del artículo en la revista MSDN -http: //msdn.microsoft .com/en-us/magazine/cc163317.aspx # S7 – JohnL

0

Utilice esta ...

System.Runtime.CompilerServices.ExtensionAttribute

No se pudo encontrar nada que se llame extensión en el espacio de nombres que ha mencionado.

3

Sólo debe estar recibiendo este error si uno de lo siguiente es cierto

  1. No está utilizando VS 2008 - se ha añadido soporte Método de extensión en VS2008
  2. Su código no tiene una referencia al Sistema .Core.dll - También se agregó en VS2008

¿Puedes verificar ambos? Mi suposición es que está intentando usar VS2005 para crear un método de extensión. Si este es el caso, desafortunadamente no es compatible.

+0

Estoy usando VS 2008. Cuando traté de agregar la referencia a System.Core, aparece en gris (es decir, se agrega). –

0

me gustaría añadir el espacio de nombres a las importaciones para que no tenga que escribirla cada vez que:

Imports System.Runtime.CompilerServices 

<Extension()> _ 
Public Sub Test(ByVal Value As String) 

End Sub 

Una vez que lo tienes en sus importaciones puede simplemente añadir la extensión a la parte superior de cada método en lugar de todo el asunto

Como dijo shahkalpesh que su método de extensión está incompleto, necesitará agregar el tipo que desea extender (vea el primer parm del código). Acabo de jugar y descubrí que si no proporciona un tipo para ampliar como parámetro, el compilador arrojará un error.

+0

Lo hice, veo mi edición ... todavía no funciona. –

+0

¿Puedes hacer clic derecho en el bit _ y dirigirte a la definición? –