扩展方法泛型 VB 到 C#

Extension method generic VB to C#

我在将方法扩展从 VB.NET 转换为 C# 时遇到问题,这是我的工作 VB.NET 代码:

Module ClientBaseExtensions
    Private Const HDR_TOKEN = "Token"

    <Extension()>
    Public Sub Initialize(Of T As Class)(ByVal client As ClientBase(Of T), url As String, pToken As String, pDeviceId As String)
        client.Endpoint.Address = New EndpointAddress(url)
        httpRequestProperty.Headers.Item(HDR_TOKEN) = pToken
        OperationContext.Current.OutgoingMessageProperties(HttpRequestMessageProperty.Name) = httpRequestProperty
    End Sub
End Module

当它自动转换时,它给我这个代码,我的基于客户端的对象无法识别它

static class ClientBaseExtensions
{

    private const  HDR_TOKEN = "Token";

    public static void Initialize<T>(ClientBase<T> client, string url, string pToken, string pDeviceId) where T : class
    {
        client.Endpoint.Address = new EndpointAddress(url);
        httpRequestProperty.Headers.Item(HDR_TOKEN) = pToken;
        OperationContext.Current.OutgoingMessageProperties(HttpRequestMessageProperty.Name) = httpRequestProperty;

    }
}

在 C# 中,通过为第一个参数(定义扩展类型的参数)指定 this 关键字来声明扩展方法:

static class ClientBaseExtensions
{

    private const  HDR_TOKEN = "Token";

                           // insert this here
    public static void Initialize<T>(this ClientBase<T> client, string url, string pToken, string pDeviceId) where T : class
    {
        client.Endpoint.Address = new EndpointAddress(url);
        httpRequestProperty.Headers.Item(HDR_TOKEN) = pToken;
        OperationContext.Current.OutgoingMessageProperties(HttpRequestMessageProperty.Name) = httpRequestProperty;

    }
}