c# - 类属性在程序集或命名空间外部只读

标签 c# .net

我有一个类的对象,我想通过接口(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/

相关文章:

c# - 如何为 DataGridView 组合框列设置自动完成

asp.net - 您如何决定将模型数据从 asp.net mvc Controller 传递到 View 的方式?

c# - 如何使用 C# 从 Word 文件中提取文本?

C# 需要使用 REGEX 定位网址吗?

C# 开关语句 : More efficient to not use default?

c# - 如何在 LINQ 选择中生成序列号?

c# - 将 .net 4.0 中的 Entity Framework 与 Oracle 数据库一起使用 - 可能吗?

.net - Angular - 发布到 .NET Framework API 的值始终为 null

c# - 在 C# 中存储设置的设计模式

c# - 在 ListView 上多次调用 SetToolTip,根本不显示工具提示