接口属性上的内部修饰符
本文关键字:内部 属性 接口 | 更新日期: 2023-09-27 18:30:21
我有以下接口:
public interface IAgable {
int Age { get; internal set; }
}
我希望 Age
属性对于引用此接口的外部程序集是只读的,但我也希望在接口的同一程序集上设置 Age
属性,因此使用 internal
修饰符。
但是,这似乎会引发编译错误,因为可访问性修饰符可能不会用于接口中的访问器。
我希望从接口调用该属性,并且我希望能够在内部级别设置它。同时,如果从外部项目引用,我希望它是只读的。
这可能吗?
有一个同时提供get
和set
的内部接口,以及一个只提供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; }
}