我想爲.NET 4編碼一個庫,並重新編譯爲使用.NET 3.5客戶端。該庫可在https://github.com/cshivers/IrcClient-csharp/tree/master/IrcClient-csharp爲.NET 4寫的代碼返回錯誤對於.NET 3.5客戶端
這是我的程序中的代碼塊在外部庫中調用Irc.ChannelMessage時發生錯誤。
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方法「私人的錯誤Sub irc_ChannelMessage(Channel As String,User As String,Message As String)''無法處理事件'Public Event ChannelMessage'(sender As Object,e As TechLifeForum.ChannelMessageEventArgs)'',因爲它們沒有 兼容簽名。
看來,一旦我編譯爲.NET 3.5 IrcClient.cs無法將其轉化爲EventArguments.cs正確...
在IrcClient.cs我們呼籲
public event EventHandler<ChannelMessageEventArgs> ChannelMessage = delegate { };
而且應該然後從EventArguments.cs調用此:
public class ChannelMessageEventArgs : EventArgs
{
public string Channel { get; internal set; }
public string From { get; internal set; }
public string Message { get; internal set; }
public ChannelMessageEventArgs(string Channel, string From, string Message)
{
this.Channel = Channel;
this.From = From;
this.Message = Message;
}
}
但是它只能工作在.NET 4中的任何想法?
爲什麼不修改irc_ChannelMessage以具有兼容的簽名。 – usr
@USR,因爲我需要IRC信息EventArgs將放棄,而不是事件參數調用 – Melona380
正如我所說的,代碼在.Net 4中運行正常,但是當切換到.NET 3.5時,此錯誤開始 – Melona380