如何使用 OOP 获取行为集的差异

How to obtain difference of sets like behaviour with OOP

我需要类似于集合论差分运算符的行为 \
我正在尝试获得某种 friend class 行为,因为我遇到以下情况:

    public interface IRead
    {
        List<string> GetInnerResource();
    } 
    public interface IWrite()
    { 
        bool SetInnerResource();
    }
    public interface IFull:IRead,IWrite{
        void SomeMethod();
    }


public Consumer:IFull  // IFull \ IWrite
{
   private IFull access; // IFull\IWrite 

   public List<string> GetInnerResource()=>this.access.GetInnerResource();
   public void SomeMethod()=>this.acces.SomeMethod();  // i need this 
   public bool SetInnerResource(){...}//--i do not want this here !
}
public Admin:IFull
{
   private IFull access;
   public List<string> GetInnerResource()=>this.access.GetInnerResource();
   public bool SetInnerResource()=>this.access.SetInnerResource();
   public void SomeMethod()=>this.access.SomeMethod();
}

如您所见,我有 3 个接口(IReadIWriteIFull),其中第三个接口派生自第一个 2还有另一种方法。

我有两个 classes ConsumerAdmin 其中:

 -Consumer needs to implement IFull \ IWrite
 -Admin  needs IFull

因为我的两个具体 classes 都将实现委托给内部字段 问题在于 Consumer class 的内部字段,因为它需要 something 实现 IFull\IWrite

通常在 C++ 中,我会用 friend class 来解决这个问题,它可以完全访问 class 而使用 Read全部 others.Here 我做不到。

我有什么选择?
我需要一个接口 ISomething: {IFull\IWrite} 用于 Consumer class

P.S IFull\IWrite=IRead + [methods defined only in IFull]

一个快速简单的解决方案是将 IFull 接口的层次结构打散,并有 3 个单独的接口,可以根据 Consumer 或 Admin 的使用需要派生 类