接口属性上的内部修饰符

时间:2014-11-14 15:27:55

标签: c# .net properties interface

我有以下界面:

public interface IAgable {
    int Age { get; internal set; }
}

对于引用此接口的外部程序集,我希望Age属性为只读,但我希望在接口上设置Age属性& #39;相同的程序集,因此是internal修饰符。

但是,这似乎会引发编译错误,因为辅助功能修饰符可能不会在接口中的访问者上使用

我希望从一个接口调用该属性,我希望能够在内部级别设置它。同时,如果从外部项目引用,我希望它是只读的。

这可能吗?

3 个答案:

答案 0 :(得分:7)

拥有提供getset的内部界面,以及仅提供get的公共界面。让公共接口扩展内部接口:

public interface IAgable
{
    int Age { get; }
}

internal interface IAgableInternal : IAgable
{
    int Age { set; }
}

答案 1 :(得分:4)

根据Microsoft

,这是不可能的

直接在命名空间内声明的接口可以声明为public或internal,就像类和结构一样,接口默认为内部访问。接口成员始终是公共的,因为接口的目的是使其他类型能够访问类或结构。没有访问修饰符可以应用于接口成员。

http://msdn.microsoft.com/en-us/library/ms173121.aspx

答案 2 :(得分:-1)

试试这个:

public interface IAgable {
 MyAge {get;set}
}
public class MyAge{
   public MyAge(int age){
       Age = age;
  }
   int Age { get; internal set; }
}