使用没有抽象的Base方法

时间:2018-06-20 12:39:00

标签: c# software-design

下面的代码可以吗?我问自己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();
}

1 个答案:

答案 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类)