Есть ли альтернативы, если я решу привести базовое ключевое слово к интерфейсу?
Следующий код не будет работать из-за ошибки времени компиляции:
Использование ключевое слово base является недопустимым в этом контексте [Console.NET] csharp (CS0175)
using System;
using System.Collections;
namespace myprogram
{
public interface I
{
void foo();
}
public class B : I
{
void I.foo()
{
Console.WriteLine("in B foo");
}
}
public class D : B, I
{
void I.foo()
{
Console.WriteLine("in D foo");
I i = base;
i.foo();
}
}
public static class Program
{
public static void Main()
{
I d = new D();
d.foo();
}
}
}
В приведенном выше коде я хочу получить следующий вывод:
in D foo
in B foo
с использованием интерфейса I
и типа D
, получаемого из B
.
Или невозможно вызвать EIMI в базовом типе из EIMI производного типа?