2009-08-28 10 views
10

Verzeihen Sie mir, wenn meine Terminologie ein wenig aus ist. Mein Wissen über Managed C++/CLI ist sehr begrenzt.Verwenden von C# -Erweiterungsmethoden aus verwalteten C++/CLI

Ich habe eine MFC-Anwendung, die eine DLL mit der Option/CLR aktiviert verwendet. Diese DLL verwendet ein paar C# -Dlls, um mit einem Server über WCF zu kommunizieren. In den meisten Fällen funktioniert das gut.

In einer der C# -Dlls habe ich eine Erweiterungsmethode zur System.Net.IPAddress-Klasse hinzugefügt, die die Subnetzmaske für das IPAddress-Objekt abruft (unter Verwendung der UnicastIPAddressInformation-Klasse und ihrer IPv4Mask). Die Erweiterungsmethode funktioniert auf der C# -Seite sehr gut, aber ich kann nicht herausfinden, wie sie im verwalteten C++/CLI-Code verwendet wird.

Erstens, ist das überhaupt möglich? Wenn ja, wie sieht die Syntax auf der verwalteten C++/CLI-Seite aus? Muss ich die Option/clr: pure verwenden, damit dies funktioniert?

Hier ist ein Beispiel für die Erweiterung Methode:

using System.Net; 
using System.Net.NetworkInformation; 
public static class IPAddressExtensions 
{ 
    public static IPAddress GetSubnetMask(this IPAddress address) 
    { 
     UnicastIPAddressInformation addressInfo = address.GetAddressInformation(); // elided 
     return ((addressInfo != null) ? addressInfo.IPv4Mask : null); 
    } 
} 

In meinem Managed C++ Code, wie würde ich diese Erweiterung Methode zu verwenden, wenn es überhaupt möglich ist?

unsigned long bytes= 0x010000FF; // example address - 127.0.0.1 
IPAddress^ address = gcnew IPAddress(BitConverter::GetBytes(bytes)); 
IPAddress^ subnet = address->GetSubnetMask(); // how do I do this??? 

Antwort

13

Sie müssen es nur eine statische Methode wie nennen:

IPAddressExtensions::GetSubnetMask(address); 

Die „Erweiterung“ Methode eher ein Compiler Trick ist, als ein Unterschied in der CLR.

+0

@Reed Copsey: Zuerst, danke! Zweitens, gibt es ein gutes Online-Tutorial zum Schreiben von verwaltetem C++ - Code? Die Syntax entgeht mir gerade, aber ich muss es schnell schaffen. Danke noch einmal. –

+0

Ich kenne kein gutes Online-Tutorial, aber für diejenigen, die noch interessiert sind, empfehle ich "C++/CLI In Action" von Nishant Sivakumar, veröffentlicht von Manning. – jschroedl

+0

Hier ist ein Amazon-Link zu dem oben genannten Buch: http://www.amazon.com/CLI-Action-Manning-Nishant-Sivakumar/dp/1932394818 –

Verwandte Themen