Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非常具体的C#到VB.NET的转换问题_C#_Vb.net_C# To Vb.net - Fatal编程技术网

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

非常具体的C#到VB.NET的转换问题,c#,vb.net,c#-to-vb.net,C#,Vb.net,C# To Vb.net,我目前正在从事一个使用AutoFac反转控制容器的项目 我试图将C#中的一些示例代码转换为我现有项目的代码库,该项目是用VB.NET编写的,我遇到了一个问题 原始代码行是: EventHub.Subscribe<HandshakingEvent>(container.Resolve<HandshakeAuthenticator>().CheckHandshake); 但是-这会导致错误,“没有为CheckHandshake的参数'ev'指定参数” EventHub.Su

我目前正在从事一个使用AutoFac反转控制容器的项目

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

原始代码行是:

EventHub.Subscribe<HandshakingEvent>(container.Resolve<HandshakeAuthenticator>().CheckHandshake);
但是-这会导致错误,“没有为CheckHandshake的参数'ev'指定参数”

EventHub.Subscribe(握手事件)过程的参数类型为System.Action(握手事件)

我知道问题出在哪里,只是不知道该怎么办!我试过使用AddressOf,但似乎也不起作用

先谢谢你。。。 -克里斯

试试看

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

(使用
AddressOf
关键字获取委托)

VB代码试图调用该方法,而不是为其创建委托。使用
AddresOf
操作符获取deletegate:

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

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

什么是
CheckHandshake
?谢谢-你说得对。我试过“AddressOf”,但还是不起作用。但事实证明,这是出于不同的原因!我已经将CheckHandshake的参数声明为ByRef,而不是ByVal!谢谢-你说得对。我试过“AddressOf”,但还是不起作用。但事实证明,这是出于不同的原因!我已经将CheckHandshake的参数声明为ByRef,而不是ByVal!
EventHub.Subscribe(Of HandshakingEvent)(AddressOf Container.Resolve(Of HandshakeAuthenticator)().CheckHandshake)