多重继承的解决方案 - 有机会改变保护级别

时间:2011-05-05 10:27:17

标签: c# inheritance interface multiple-inheritance protection

我需要一个多重继承的解决方案。我知道我可以使用接口。那将是一个很好的解决方案但...... ......我需要有机会改变保护级别,但接口领域必须是公开的......

例如:

我有

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 个答案:

答案 0 :(得分:6)

显式接口实现:

 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 :(得分:1)

[从Robson的问题和他对Marc的答案的拒绝编辑复制]

我的解决方案是:

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