Первый взгляд на этот код:
class Program
{
static void Main(string[] args)
{
var x =(Base) new Derived();
((IMethod)x).DoWork();
Console.ReadKey();
}
}
interface IMethod
{
void DoWork();
}
abstract class Base : IMethod
{
void IMethod.DoWork()
{
Console.WriteLine("Base.DoWork");
}
}
class Derived : Base, IMethod
{
public void DoWork()
{
//here I where I want to call base.DoWork();
Console.WriteLine("Derived.DoWork");
}
}
Выход:
Derived.DoWork
Желаемая:
Base.DoWork
Derived.DoWork
Я имею дело с API, который предоставляет интерфейс, который при реализации будет вызывать метод DoWork
в некоторой части процессии.
Теперь в приведенном выше примере класс Base
является частью API, который внутренне (в API) уже явно реализует этот интерфейс и выполняет некоторые важные исполнения в методе DoWork
.
Мне также нужно переопределить реализацию IMethod
в моем производном классе, поэтому я получаю уведомление при необходимости, проблема в том, что я не могу «переопределить» метод и вызвать базовый метод, также я не могу привести база до IMethod
.
Есть решение?
Примечание : отражение не будет работать, так как это проект Silveright, и вызов частного метода запрещен.