Скажите, если у меня есть интерфейс
public interface IVehicle<T>
{
string Drive();
string Stop();
}
И два класса Car () и Airplane ()
Каждый имеет класс, который использует интерфейс для выполнения действий
public class CarActions : IVehicle<Car>
{
public string Drive()
{
return "Go";
}
public string Stop()
{
return "Stop";
}
}
и
public class AeroplaneActions : IVehicle<Aeroplane>
{
public string Drive()
{
return "Go";
}
public string Stop()
{
return "Stop";
}
public virtual string Fly()
{
return "Fly";
}
}
Когда я высмеиваю класс «Самолет», он не найдет метод fly (), потому что он не является частью интерфейса
Mock<AeroplaneActions> mockedDirectly = new Mock<AeroplaneActions>();
mockedDirectly.Setup(method => method.Drive()).Returns("Drive");
mockedDirectly.Setup(method => method.Stop()).Returns("Stop");
mockedDirectly.Setup(method => method.Fly()).Returns("Fly");
Я попытался издеваться надНепосредственно класс действий, который работает, однако мне нужно будет изменить мои методы на виртуальные в этом случае, которых я хотел бы избежать.
Mock<AeroplaneActions> mockedDirectly = new Mock<AeroplaneActions>();
mockedDirectly.Setup(method => method.Drive()).Returns("Drive");
mockedDirectly.Setup(method => method.Stop()).Returns("Stop");
mockedDirectly.Setup(method => method.Fly()).Returns("Fly");
Мне интересно, есть ли другие альтернативы этому, кроме использованиявиртуальные методы?