У меня есть следующий базовый интерфейс
public interface IBaseAction
{
bool CanAct(...)
}
и два наследующих интерфейса говорят
public interface IAction1 : IBaseAction{}
и
public interface IAction2 : IBaseAction{}
Моя проблема в том, что у меня есть класс, который реализует и то, и другое, и я хочу реализовать CanAct ИНОСТРАННО.
public class ComplexAction : IAction1, IAction2
{
bool IAction1.CanAct(...){} //doesn't compile as CanAct is not a member of IAction1!!
}
ComplexAction c=new ComplexAction();
var a1 = (IAction1)c;
var a2 = (IAction2)c;
a1.CanSave(); //THESE TWO CALLS SHOULD BE IMPLEMENTED DIFFERENTLY
a2.CanSave();
Есть ли достаточно чистый способ сделать это?
(Кроме того, мои интерфейсы имеют семантическое значение и, по крайней мере, еще три функции, так что исключить всю иерархию целиком, но я бы желает скопировать bool CanAct на каждый наследуемый интерфейс, если это единственное решение (их 4-6))