имплементация интерфейса
Есть один интерфейс который содержит один virtual метод(Hello), а этот интерфейс имплементируется в class B. Сделал override этого метода и хочу сделать так чтобы после имплементаций этого интерфейса вызывался тот метод которому сделал override, как это сделать ?
public interface IMethods
{
string Hello();
}
public class B : IMethods
{
public virtual string Hello()
{
return "Hello from Russia";
}
}
public class C : IMethods
{
public virtual string Hello()
{
return "Hello from Italy";
}
}
Ответы (1 шт):
Автор решения: Dzianis Karpuk
→ Ссылка
Вы не сможете вызвать overriden метод за пределами класса, даже если попробуете сделать приведение типов к классу B. В этом и есть смысл virtual функций. Однако вы можете объявить вашу функцию не virtual, а new, тогда у вас останется доступ к функции базового класса.
class Program
{
static void Main(string[] args)
{
var c = new C();
Console.Write((c as B).Hello());
}
}
public interface IMethods
{
string Hello();
}
public class B : IMethods
{
public virtual string Hello()
{
return "Hello from Russia";
}
}
public class C : B
{
public new string Hello()
{
return "Hello from Italy";
}
}