我有一个类的对象,我想通过接口(interface)将其传递给另一个程序集。
由于我传递了一个引用,因此所有公开的属性、方法等都可以从创建它的程序集外部进行修改。
有没有一种方法可以访问其程序集(或命名空间)内的所有公开元素,而在其他程序集(或命名空间)中,这些元素是只读的?
作为一种解决方法,在写入应在当前范围内只读的元素时仅使用断言也可以。
最佳答案
我认为您想要 internal
访问修饰符。它限制了对当前程序集的访问。
假设我们要构建一个 Person
类:
public class Person
{
public string Name { get; set; }
internal int Bio { get; set; }
private int age;
public int Age
{
get { return age; }
internal set { age = value; }
}
public string Location { get; internal set; }
}
名称
是public
因此对所有程序集都可见。Bio
是内部
,因此仅对当前程序集可见。Age
有一个隐式public
setter ,因为成员是public
。 setter 明确内部
。这意味着所有程序集都可以获取该值,但只有当前程序集可以设置该值。Location
与上面相同,但它是一个自动属性。
您可以阅读有关访问修饰符的更多信息 here .
(有一个异常(exception),即 InternalsVisibleTo
属性)。
关于c# - 类属性在程序集或命名空间外部只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747701/