Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用托管C++/CLI_C#_.net_.net 3.5_C++ Cli_Unmanaged - Fatal编程技术网

C# 使用托管C++/CLI

C# 使用托管C++/CLI,c#,.net,.net-3.5,c++-cli,unmanaged,C#,.net,.net 3.5,C++ Cli,Unmanaged,如果我的术语有点错误,请原谅。我对托管C++/CLI的了解非常有限 我有一个MFC应用程序,它使用启用了/clr选项的dll。此dll使用两个C#dll与使用WCF的服务器进行通信。在大多数情况下,这很好 在其中一个C#DLL中,我向System.Net.IPAddress类添加了一个扩展方法,该方法将检索IPAddress对象的子网掩码(使用UnicastIPAddressInformation类及其IPv4Mask)。扩展方法在C#端非常有效,但我不知道如何在托管C++/CLI代码中使用它

如果我的术语有点错误,请原谅。我对托管C++/CLI的了解非常有限

我有一个MFC应用程序,它使用启用了/clr选项的dll。此dll使用两个C#dll与使用WCF的服务器进行通信。在大多数情况下,这很好

在其中一个C#DLL中,我向System.Net.IPAddress类添加了一个扩展方法,该方法将检索IPAddress对象的子网掩码(使用UnicastIPAddressInformation类及其IPv4Mask)。扩展方法在C#端非常有效,但我不知道如何在托管C++/CLI代码中使用它

首先,这可能吗?如果是,托管C++/CLI端的语法是什么样的?我必须使用/clr:pure选项才能工作吗

下面是扩展方法的一个示例:

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);
    }
}

在我的托管C++代码中,如果可能的话,我怎么使用这个扩展方法?< /P>

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???

您必须像静态方法一样调用它:

IPAddressExtensions::GetSubnetMask(address);

“extension”方法更多的是一种编译器技巧,而不是CLR中的差异。

@Reed Copsey:首先,谢谢!第二,有一个好的在线教程来编写管理的C++代码吗?我现在不懂语法,但我需要尽快学好它。再次感谢。我不知道有什么好的在线教程,但对于那些仍然感兴趣的人,我推荐曼宁出版的Nishant Sivakumar的《C++/CLI在运行》。这里有一个指向上述书籍的亚马逊链接:@MattDavis我也有同样的问题,但是,我已经用这本电子书清除了我对C++/CLI的基本知识。希望它会帮助你的。谢谢Per Lundberg推荐了一本好的电子书