非常具体的C#到VB.NET转换问题

时间:2010-11-07 23:47:27

标签: c# vb.net c#-to-vb.net

我目前正在开发一个使用AutoFac Inversion of Control容器的项目。

我正在尝试将一些示例代码从C#转换为我现有项目的代码库,该代码库是用VB.NET编写的,我遇到了问题。

原始代码行是:

EventHub.Subscribe<HandshakingEvent>(container.Resolve<HandshakeAuthenticator>().CheckHandshake);

我已转换为:

EventHub.Subscribe(Of HandshakingEvent)(Container.Resolve(Of HandshakeAuthenticator)().CheckHandshake)

但是 - 这会导致错误,“没有为CheckHandshake的参数'ev'指定参数”。

EventHub.Subscribe(Of HandshakingEvent)程序的参数类型是 System.Action(HandshakingEvent)

我可以看到问题所在,我只是不确定该怎么做!我尝试过使用'AddressOf',但这似乎也不起作用。

提前致谢... - 克里斯

2 个答案:

答案 0 :(得分:5)

尝试

EventHub.Subscribe(Of HandshakingEvent)(AddressOf Container.Resolve(Of HandshakeAuthenticator)().CheckHandshake)

(使用AddressOf关键字获取代理人)

答案 1 :(得分:3)

VB代码试图调用该方法而不是为它创建委托。使用AddresOf运算符获取deletegate:

EventHub.Subscribe(Of HandshakingEvent)(AddressOf Container.Resolve(Of HandshakeAuthenticator)().CheckHandshake)

C#中不需要关键字,因为在调用方法时总是使用括号,但在VB中,您也可以调用不带括号的方法。