решение для множественного наследования - с возможностью изменения защиты lvl - PullRequest
4 голосов
/ 05 мая 2011

Мне нужно решение для множественного наследования. Я знаю, что могу использовать интерфейсы. Это было бы хорошим решением, но ... ... Мне нужна возможность изменить уровень защиты, но поля интерфейса должны быть открытыми ...

Например:

У меня есть

interface IInterface_1 {
  string field_1{set;get;}
  string field_2{set;get;}
}

interface IInterface_2 {
  string field_3{set;get}
  string field_4{set;get}
}

А в основном классе мне нужно спрятать некоторые поля

class MainClass : IInterface_1, IInterface_2 {
  public string field_1{set;get;}
  private string field_2{set;get;}
  public string field_3{set;get}
  public string field_4{set;get}
}

У вас есть какое-нибудь решение для этого?

Ответы [ 2 ]

6 голосов
/ 05 мая 2011

Явная реализация интерфейса:

 class MainClass : IInterface_1, IInterface_2 {        
    public string field_1{get;set;}
    public string field_3{get;set;}
    public string field_4{get;set;}

    private string field2;
    string IInterface_1.field_2 {
        get {return field2;}
        set {field2 = value;}
    }
 }
1 голос
/ 05 мая 2011

[Скопировано из вопроса Робсона и его отклоненного редактирования к ответу Марка]

Мое решение:

public class PermissionDeniedException : Exception {}

class MainClass : IInterface_1, IInterface_2 {
  public string field_1{set;get;}
  private string field_2{set;get;}
  string IInterface_1.field_2 {
    get {throw new PermissionDeniedException();}
    set {throw new PermissionDeniedException();}
  }
  public string field_3{set;get}
  public string field_4{set;get}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...