Вызов метода из класса, реализующего интерфейс
Для проверки работы необходимо вызвать метод из класса, реализующего интерфейс, например (someContext тоже интерфейс).
class Calc : cCalculate
{
public void Calculate(someContext context){ //do something}
}
Как вызвать метод Calculate из другого класса, какой параметр передать?
class Programm
{
static void Main(string[] args)
{
Calc clc = new Calc();
clc.Calculate(параметр?);
}
}
Ответы (1 шт):
Вот простой пример.
public interface ICalculator
{
int Calculate(int a, int b);
}
public class Divider : ICalculator
{
public int Calculate(int a, int b)
{
return a / b;
}
}
public class Substractor : ICalculator
{
public int Calculate(int a, int b)
{
return a - b;
}
}
Тип созданного объекта в коде можно привести в этом случае к интерфейсу.
Может пример не очень красивый, но показывает, что метод ничего не знает о конкретной реализации переданного ему экземпляра ICalculator, но за счет интерфейса знает, что может вызваеть его метод.
static void ExecuteAndPrint(ICalculator calc, int a, int b)
{
int result = calc.Calculate(a, b);
Console.WriteLine(result);
}
static void Main(string[] args)
{
ExecuteAndPrint(new Divider(), 6, 2);
ExecuteAndPrint(new Substractor(), 6, 2);
}
Вывод в консоль
3
4
Если же используется конкрентный тип, как из вашего примера, то интерфейс в данном случае никак не используется, и с классом, реализующим интерфейс можно работать точно так же, как с любым другим.