У меня следующий сценарий
У меня есть интерфейс
public interface ImyInterface
{
void myInterfaceMethod(string param);
}
У меня есть абстрактный класс
public abstract class myAbstractClass
{
public myAbstractClass()
{
//something valid for each inherited class
}
public void myAbstractMethod<T>(T param)
{
//something with T param
}
}
У меня есть класс, который наследуется от myAbstractClass и реализует ImyInterface
public class myClass : myAbstractClass, ImyInterface
{
public myClass():base()
{}
public void ThisMethodWillNeverCall()
{
// nothing to do
}
}
И, наконец, у меня есть класс, в котором я создаю объект ImyInterface. В этот момент я бы назвал myAbstractMethod, но ...
public class myFinalClass
{
public void myFinalMethod()
{
ImyInterface myObj = _myContainer<ImyInterface>();
myObj.???
}
}
Очевидно, что этого метода нет, потому что он не объявлен в интерфейсе.
Мое решение следующее
public interface ImyInterface
{
void myInterfaceMethod(string param);
void myFakeMethod<T>(T param);
}
public class myClass : myAbstractClass, ImyInterface
{
public myClass():base()
{}
public void ThisMethodWillNeverCall()
{
// nothing to do
}
//--- a fake method
public void myFakeMethod<T>(T param)
{
base.myAbstractMethod<T>(param);
}
}
Есть ли другое решение лучше моего?
Спасибо!