当我尝试从System.Timers.ElapsedEventArgs继承时,我无法创建有效的类,因为唯一的构造函数是内部的(从1获取)
我想这样做是因为我希望能够创建我正在派生的类的实例,并在调用Timer的已用事件进行单元测试时将其作为参数传递。
为了帮助测试,我创建了一个间接层,使用不同的事件作为类的属性,我可以使用公共方法调用它。我知道这不是现在正确做事的正确方法,但我想让测试正常工作,我想找出替代系统时钟/定时器的方法。
新事件作为财产:
public event System.Timers.ElapsedEventHandler PerformEvent;
链式事件。这样一来,如果时间流逝它会触发,或者我可以自己调用它:
this.m_timer.Elapsed += this.PerformEvent;
我正在尝试创建一种调用它的公共方式,并且不能新建一个ElapsedEventArgs。
public void FireEvent()
{
object o = new object();
this.PerformEvent.Invoke(o, objectIWantToBeElapsedEventArgs)
}
internal ElapsedEventArgs(int low, int high) {
long fileTime = (long)((((ulong)high) << 32) | (((ulong)low) & 0xffffffff));
this.signalTime = DateTime.FromFileTime(fileTime);
}
答案 0 :(得分:0)
如果你需要创建一个新的ElapsedEventArgs,你可以使用typemock isolator来调用它的内部构造函数,我已经为你的例子创建了一个测试:
bootstrap(Main, [MyService])
您可以在here中详细了解相关信息。