Множественная явная реализация интерфейса

У меня есть следующий базовый интерфейс

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))

7
задан TDaver 19 June 2011 в 21:43
поделиться