gpt4 book ai didi

c# - 从托管 C++/CLI 使用 C# 扩展方法

转载 作者:可可西里 更新时间:2023-11-01 09:04:54 31 4
gpt4 key购买 nike

如果我的术语有点不对,请原谅我。我对托管 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++ 代码中,如果可能的话,我将如何使用这种扩展方法?

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

“扩展”方法与其说是 CLR 中的差异,不如说是一种编译器技巧。

关于c# - 从托管 C++/CLI 使用 C# 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349674/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com