接收继承它的类类型的参数的接口方法

时间:2014-01-17 12:44:06

标签: c# class methods interface

我想尝试这样的事情:

public interface ICar
{
    public void Update(/*something here*/);
}

然后是两个班级:

public class Peugeot : ICar
{
    public void Update(Peugeot car)
    {

    }
}

public class Volvo : ICar
{
    public void Update(Volvo car)
    {

    }
}

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以ICar通用:

public interface ICar<T> where T : ICar<T>
{
    public void Update<T>(T car);
}

然后相应地实施Update方法:

public class Peugeot : ICar<Peugeot>
{
    public void Update(Peugeot car)
    {

    }
}

public class Volvo : ICar<Volvo>
{
    public void Update(Volvo car)
    {

    }
}

答案 1 :(得分:0)

您可以(至少有点)通过制作显式接口实现,然后提供正确输入的公共Update方法来实现此目的:

public interface ICar
{
    void Update(ICar car);
}

public class Peugeot : ICar
{
    public void Update(Peugeot car)
    {
        Update(car);
    }

    void ICar.Update(ICar car)
    {
        // do some updating
    }
}

public class Volvo : ICar
{
    public void Update(Volvo car)
    {
        Update(car);
    }

    void ICar.Update(ICar car)
    {
        // do some updating
    }
}