Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
将包含NSSubstitute代码的C#语句转换为VB.net_C#_Vb.net_Nsubstitute - Fatal编程技术网

将包含NSSubstitute代码的C#语句转换为VB.net

将包含NSSubstitute代码的C#语句转换为VB.net,c#,vb.net,nsubstitute,C#,Vb.net,Nsubstitute,在阅读NSubstitute教程时,我将用C#编写的示例转换为VB.net以了解其功能,但我需要您对这些(不相关)语句的支持,尽管我非常小心,但我无法转换这些语句: 一, 二, 注意:foo是一个派生对象,它来自一个名为“SayHello”的void方法接口 三, 注意:引擎是此接口的派生对象: public interface IEngine { event EventHandler Idling; event EventHandler<LowFuelWarningEve

在阅读NSubstitute教程时,我将用C#编写的示例转换为VB.net以了解其功能,但我需要您对这些(不相关)语句的支持,尽管我非常小心,但我无法转换这些语句:

一,

二,

注意:foo是一个派生对象,它来自一个名为“SayHello”的void方法接口

三,

注意:引擎是此接口的派生对象:

public interface IEngine {
    event EventHandler Idling;
    event EventHandler<LowFuelWarningEventArgs> LowFuelWarning;
    event Action<int> RevvedAt;
}
五,

六,

我希望在你的支持下,我能够自己转换剩下的语句

先谢谢你


Michael

您似乎想要转换Lambda并添加事件处理程序

兰姆达来自c#

转化为

.Where(function(x) x.Foo = 1)
.Do(sub(x) x.Bar())
在VB.Net中,您必须考虑Labda是否实际执行某个函数或子函数,并对其进行相应的编码

在c中添加事件#

在VB.Net中

AddHandler engine.Idling, AddressOf MyEventHandler

VB.Net
允许您像这样添加事件。通过关键字
RemoveHandler

删除事件要添加到Jeroen的答案中,添加事件处理程序的一般格式为:

您可以使用
AddressOf
操作符创建引用命名方法的委托,但这不是唯一的方法。Lambda还会创建一个委托,因此:

engine.Idling += (sender, args) => wasCalled = true;
变成这样:

此外,此行实际上并没有添加事件处理程序:

engine.RevvedAt += rpm => revvedAt = rpm;
所以AddHandler不起作用。我从未亲自做过,但我相信您需要调用
委托。为此,请将
组合起来:


试着把你的班级放进去:Jeroen,谢谢-我知道这个转换器(和其他的),但他们不能在所有情况下都帮我。谢谢。再加上杰罗恩斯的回答,我又转换了几句话。当我转换完所有语句后,我将标记一个答案——在另一种情况下,我要求您再提供一个支持。
engine.Idling += Raise.EventWith(new object(), new EventArgs());
engine.RevvedAt += rpm => revvedAt = rpm;
.Where(x => x.Foo = 1)
.Do(x => x.Bar())
.Where(function(x) x.Foo = 1)
.Do(sub(x) x.Bar())
engine.Idling += MyEventHandler
AddHandler engine.Idling, AddressOf MyEventHandler
AddHandler someObject.SomeEvent, SomeDelegate
engine.Idling += (sender, args) => wasCalled = true;
AddHandler engine.Idling, Sub(sender, args) wasCalled = True
engine.RevvedAt += rpm => revvedAt = rpm;
engine.RevvedAt = [Delegate].Combine(engine.RevvedAt, Sub(rpm) revvedAt = rpm)