下面的代码可以吗?我问自己Start()
接口中的Stop()
和ICustomTimer
方法是否适合作为位置。因为我的Main方法中需要它。
这是代码的味道吗,或者换句话说,调用没有抽象的基本方法的最佳实践是什么? Timer
类没有可用于继承的接口。
public interface ICustomTimer
{
string Value { get; set; }
//Implementation in Timer
void Start();
//Implementation in Timer
void Stop();
}
public class CustomTimer : System.Timers.Timer, ICustomTimer
{
public string Value { get; set; }
}
public Main()
{
var customTimerObj = iocContainer.Get<ICustomTimer>();
customTimerObj.Start();
}
答案 0 :(得分:1)
这是一种有效的用法,甚至是一种很好的用法,即使您只想在使用该接口时调用类方法,否则可以这样做:
public interface ICustomTimer
{
string Value { get; set; }
//Implementation in Timer
void Start();
//Implementation in Timer
void Stop();
}
public class CustomTimer : System.Timers.Timer, ICustomTimer
{
public string Value { get; set; }
void ICustomTimer.Start() { this.Start(); }
void ICustomTimer.Stop() { this.Stop(); }
}
这样,您可以做其他事情(在方法调用之前或将方法调用发布到Timer类)