2011-05-16 11 views
19

En C#, los métodos de extensión pueden ser creados por¿Cómo puedo crear métodos de extensión .Net por C++/CLI?

public static class MyExtensions { 
    public static ReturnType MyExt(this ExtType ext) { 
     ... 
    } 
} 

Dado que todos los de mi biblioteca están escritas en C++/CLI, me gustaría crear los métodos de extensión .net también en C++/CLI (con el fin de tener una DLL en lugar de dos). He intentado el siguiente código

static public ref class MyExtensions { 
public: 
    static ReturnType^ MyExt(this ExtType ^ext) { 
     ... 
    } 
}; 

Pero el compilador no puede reconocer la palabra clave 'esto' en el primer argumento.

error C2059: syntax error: 'this' 

¿Hay alguna manera de crear el método de extensión en C++/CLI?

Respuesta

35

Sólo tienes que decorar el método y la clase que contiene la ExtensionAttribute:

using namespace System::Runtime::CompilerServices; 
... 

[ExtensionAttribute] 
public ref class MyExtensions abstract sealed { 
    public:   
     [ExtensionAttribute] 
     static ReturnType MyExt(ExtType ^ext) { 
      ... 
     } 
}; 
+9

gracias por proporcionar el espacio de nombres también - por lo que muchas veces las personas (que son de otro modo estando útiles) se pierda este. – philsquared

Cuestiones relacionadas