Вызов метода из класса, реализующего интерфейс

Для проверки работы необходимо вызвать метод из класса, реализующего интерфейс, например (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 шт):

Автор решения: aepot

Вот простой пример.

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

Если же используется конкрентный тип, как из вашего примера, то интерфейс в данном случае никак не используется, и с классом, реализующим интерфейс можно работать точно так же, как с любым другим.

→ Ссылка