C# 多重继承解决方案-有机会更改保护lvl

C# 多重继承解决方案-有机会更改保护lvl,c#,inheritance,interface,multiple-inheritance,protection,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} } 在主类中,我需要隐藏一些

我需要一个多重继承的解决方案。我知道我可以使用接口。这将是一个很好的解决方案,但。。。 …我需要机会更改保护级别,但接口字段必须是公共的

例如:

我有

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

您对此有什么解决方案吗?

显式接口实现:

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

[摘自罗布森的问题和他对马克答案的拒绝编辑]

我的解决办法是:

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

var x=新的MainClass();((i界面_1)x)。字段_2=-1;但这仍然会影响到那个成员。。。假设你也可以把界面设为内部?@Nathan-改变保护只会隐藏起来。你可以一直这样做,即使是“完整”的MIYes,我看到了这个解决方案,但你仍然可以得到这个值。我需要完全撤销这个权限。@robson-那么它就不能成为公共界面的一部分;该接口可以被保护到某些子类集合,也可以被保护到某些嵌套类集合,但老实说,这可能不值得。任何关心这个问题的人都可以通过反思进入你的领域。我能说服你把编辑作为一个答案而不是问题的一部分吗?当然。我已经做到了。你必须接受编辑。我认为马克的意思是作为一个单独的答案;他可以自己把你的答案编辑到他的帖子里。我为你做了这件事。我这样做的缺点是你不能因此而获得声誉(我也不会),但这也适用于你将它附加到马克的答案上。请注意,您的编辑被社区拒绝(不是Marc)。确定。我不能回答我的问题。这就是我以前没有这样做的原因。