Мне нужно поведение, подобное разностному оператору теории множеств \
.
Я пытаюсь получить что-то от поведения класса friend
, так как у меня следующая ситуация:
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
интерфейсы (IRead
, IWrite
, IFull
), где третий получен из первого 2
и имеет другой метод.
У меня есть дваклассы Consumer
и Admin
где:
-Consumer needs to implement IFull \ IWrite
-Admin needs IFull
Поскольку оба моих конкретных класса делегируют реализации внутреннему полю, проблема заключается во внутреннем поле для класса Consumer
, так как ему требуется something
который реализует IFull\IWrite
Обычно в C++
я бы решил это с классом friend
, который имеет полный доступ к классу, используя Read
для всех остальных. Здесь я не могусделать это.
Какие у меня есть альтернативы?
Мне нужен интерфейс ISomething: {IFull\IWrite}
для Consumer
класса
PS IFull\IWrite=IRead + [methods defined only in IFull]