C# 为.NET 4编写的代码为.NET 3.5客户端返回错误
我正在尝试获取一个为.NET4编码的库,并重新编译它以使用.NET3.5客户端。图书馆在 这是我的程序中的代码块,在调用外部库中的Irc.ChannelMessage时出错C# 为.NET 4编写的代码为.NET 3.5客户端返回错误,c#,.net,vb.net,irc,C#,.net,Vb.net,Irc,我正在尝试获取一个为.NET4编码的库,并重新编译它以使用.NET3.5客户端。图书馆在 这是我的程序中的代码块,在调用外部库中的Irc.ChannelMessage时出错 Private Sub irc_ChannelMessage(Channel As String, User As String, Message As String) Handles irc.ChannelMessage rtbOutput.Clear() rtbOutput.Text
Private Sub irc_ChannelMessage(Channel As String, User As String, Message As String) Handles irc.ChannelMessage
rtbOutput.Clear()
rtbOutput.Text = Message
If rtbOutput.Text.StartsWith("!Listen ") Then
Dim s As String = rtbOutput.Text
Dim pars As New List(Of String)(s.Split(" "c))
CheckParams(pars)
End If
End Sub
当我的程序设置为使用.NET 4时,该库适用于我的程序,但是当我将其设置为使用.NET 3.5客户端时,它返回以下错误
错误4方法“私有子irc\u ChannelMessageChannel作为字符串,用户”
作为字符串,消息作为字符串“无法处理事件”公共事件
ChannelMessagesender作为对象,e作为
TechLifeForum.ChannelMessageEventArgs'因为它们没有
兼容签名
似乎一旦我为.NET 3.5编译它,IrcClient.cs就无法正确地将其转换为EventArguments.cs
在IrcClient.cs中,我们正在呼叫
public event EventHandler<ChannelMessageEventArgs> ChannelMessage = delegate { };
但是,它只能在.NET 4中工作。有什么想法吗?当设置事件处理程序句柄关键字时,方法的签名,换句话说,传递给方法的变量必须与事件的签名匹配 您的活动签名为C:
EventHandler<ChannelMessageEventArgs> ChannelMessage
您试图用以下签名错误地处理此事件:
irc_ChannelMessage(Channel As String, User As String, Message As String)
这三个变量包含在ChannelMessageEventArgs类中,并一起传递,因此您可以将事件处理方法更改为:
Private Sub irc_ChannelMessage(EventArgs As ChannelMessageEventArgs) Handles irc.ChannelMessage
rtbOutput.Clear()
rtbOutput.Text = EventArgs.Message
If rtbOutput.Text.StartsWith("!Listen ") Then
Dim s As String = rtbOutput.Text
Dim pars As New List(Of String)(s.Split(" "c))
CheckParams(pars)
End If
End Sub
为什么不修改irc_ChannelMessage使其具有兼容的签名。@USR,因为我需要EventArgs将发出的irc信息,而不是此引用的对Event Args的调用,因为我说过代码在.Net 4中运行良好,但当切换到.Net 3.5时,此错误开始irc信息作为字符串出现在方法参数通道中,用户作为字符串,消息作为字符串。为什么你不能用那个?@USR,我正试着用那个。假设它被事件arg引用:public event EventHandler ChannelMessage=delegate{};但是,它不会转到事件参数
irc_ChannelMessage(Channel As String, User As String, Message As String)
Private Sub irc_ChannelMessage(EventArgs As ChannelMessageEventArgs) Handles irc.ChannelMessage
rtbOutput.Clear()
rtbOutput.Text = EventArgs.Message
If rtbOutput.Text.StartsWith("!Listen ") Then
Dim s As String = rtbOutput.Text
Dim pars As New List(Of String)(s.Split(" "c))
CheckParams(pars)
End If
End Sub