如何修复AddressOf需要轻松的对话委托错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复AddressOf需要轻松的对话委托错误相关的知识,希望对你有一定的参考价值。
对不起,这是C#和VB.Net的混合体
我有一个带有2个代表的C#类:
public delegate string GetSettingDelegate(string key);
public event GetSettingDelegate GetSettingEvent;
public delegate void SetSettingDelegate(string key, string value);
public event SetSettingDelegate SetSettingEvent;
在VB类中,我为事件添加了处理程序:
AddHandler _gisCtrl.SetSettingEvent, AddressOf SetSetting
AddHandler _gisCtrl.GetSettingEvent, AddressOf GetSetting
当我尝试删除处理程序时:
RemoveHandler _gisCtrl.SetSettingEvent, AddressOf SetSetting
RemoveHandler _gisCtrl.GetSettingEvent, AddressOf GetSetting
SetSetting没问题,但GetSetting会发出警告:
AddressOf表达式在此上下文中无效,因为AddressOf的方法参数需要与事件的delagate类型进行轻松的对话。
这是方法
Private Sub SetSetting(ByVal key As String, ByVal value As String)
KernMobileBusinessLayer.[Global].Settings.SetValue(key, value)
End Sub
Private Function GetSetting(ByVal key As String)
Return KernMobileBusinessLayer.[Global].Settings.GetString(key)
End Function
任何想法如何解决这个问题以及为什么它首先被抛出? 2个委托/事件/方法看起来很相似,我不知道为什么一个是好的,一个人发出警告。
答案
可能你的GetSetting
函数必须完全匹配GetSettingDelegate
签名:
Private Function GetSetting(ByVal key As String) as String
另一答案
你的vb代码:
Private Function GetSetting(ByVal key As String)
与C#委托定义不匹配:
public delegate string GetSettingDelegate(string key);
你应该在VB实现中指定一个返回类型,如下所示:
Private Function GetSetting(ByVal key As String) As String
以上是关于如何修复AddressOf需要轻松的对话委托错误的主要内容,如果未能解决你的问题,请参考以下文章
错误:没有为类 'Utf8' 定义 getter 'addressOf'
如何修复 laravel 5.2 zizaco 委托:迁移类名验证?