接口属性上的内部修饰符

本文关键字:内部 属性 接口 | 更新日期: 2023-09-27 18:30:21

我有以下接口:

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

我希望 Age 属性对于引用此接口的外部程序集是只读的,但我也希望在接口的同一程序集上设置 Age 属性,因此使用 internal 修饰符。

但是,这似乎会引发编译错误,因为可访问性修饰符可能不会用于接口中的访问器

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

这可能吗?

接口属性上的内部修饰符

有一个同时提供getset的内部接口,以及一个只提供get的公共接口。 让公共接口扩展内部接口:

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

根据Microsoft,这是不可能的

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

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

试试这个:

public interface IAgeable {
 MyAge {get;set}
}
public class MyAge:IAgeable{
   public MyAge(int age){
       MyAge = age;
  }
   int MyAge { get; internal set; }
}