我有以下界面:
public interface IAgable {
int Age { get; internal set; }
}
对于引用此接口的外部程序集,我希望Age
属性为只读,但我希望在接口上设置Age
属性& #39;相同的程序集,因此是internal
修饰符。
但是,这似乎会引发编译错误,因为辅助功能修饰符可能不会在接口中的访问者上使用。
我希望从一个接口调用该属性,我希望能够在内部级别设置它。同时,如果从外部项目引用,我希望它是只读的。
这可能吗?
答案 0 :(得分:7)
拥有提供get
和set
的内部界面,以及仅提供get
的公共界面。让公共接口扩展内部接口:
public interface IAgable
{
int Age { get; }
}
internal interface IAgableInternal : IAgable
{
int Age { set; }
}
答案 1 :(得分:4)
根据Microsoft
,这是不可能的直接在命名空间内声明的接口可以声明为public或internal,就像类和结构一样,接口默认为内部访问。接口成员始终是公共的,因为接口的目的是使其他类型能够访问类或结构。没有访问修饰符可以应用于接口成员。
答案 2 :(得分:-1)
试试这个:
public interface IAgable {
MyAge {get;set}
}
public class MyAge{
public MyAge(int age){
Age = age;
}
int Age { get; internal set; }
}