TDa*_*ver 7 c# inheritance interface
我有以下基本界面
public interface IBaseAction
{
bool CanAct(...)
}
Run Code Online (Sandbox Code Playgroud)
和两个继承接口说
public interface IAction1 : IBaseAction{}
Run Code Online (Sandbox Code Playgroud)
和
public interface IAction2 : IBaseAction{}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我有一个实现这两者的类,我想实现不同的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();
Run Code Online (Sandbox Code Playgroud)
有一个相当干净的方式来做到这一点?
(另外,我的界面具有语义和至少三个功能,因此抛弃整个层次结构是不可能的,但是我愿意将bool CanAct复制到每个继承接口,如果这是唯一的解决方案(其中有4-6个))