扩展方法泛型 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;
}
}
我在将方法扩展从 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;
}
}