2011-05-16 7 views
19

सी # में, विस्तार तरीकों सेमैं सी ++/सीएलआई द्वारा .NET एक्सटेंशन विधियों को कैसे बना सकता हूं?

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

बनाया जा सकता है के बाद से मेरी लाइब्रेरी के सभी C++/CLI में लिखे गए हैं, मैं क्रम में करने के लिए C++/CLI (में भी .net विस्तार तरीकों बनाना चाहेंगे दो के बजाय एक डीएलएल)। मैं निम्नलिखित कोड

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

की कोशिश की है लेकिन संकलक पहला तर्क में कीवर्ड 'इस' की पहचान नहीं कर सकते हैं।

error C2059: syntax error: 'this' 

क्या सी ++/सीएलआई में विस्तार विधि बनाने का कोई तरीका है?

उत्तर

35

तुम बस ExtensionAttribute साथ विधि और युक्त वर्ग को सजाने के लिए है:

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

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

नाम स्थान भी उपलब्ध कराने के लिए धन्यवाद - कई बार लोगों को (जो अन्यथा उपयोगी किया जा रहा है) इस याद आती है। – philsquared

संबंधित मुद्दे