【问题标题】:Limit access to a Class library in C#.NET限制对 C#.NET 中类库的访问
【发布时间】:2013-09-07 04:08:32
【问题描述】:

我有一个 C# 类库,将用于 2 个不同的项目。 其中一个应该可以访问所有公共类和方法,而另一个应该只能访问某些类和方法。

什么是最好的解决方案?

【问题讨论】:

  • 使用InternalsVisibleTo属性。
  • 使用内部访问修饰符并将“内部可见”设置为需要更多访问权限的那个。

标签: .net oop class-library access-modifiers multiple-projects


【解决方案1】:

我认为你最好的选择是InternalsVisibleTo 属性

通常,具有内部作用域(在 C# 中)和友元作用域(在 Visual Basic 中)的类型和成员仅在定义它们的程序集中可见。 InternalsVisibleToAttribute 属性使它们对指定程序集(称为友元程序集)中的类型也可见。 该属性应用于程序集级别。这意味着它可以包含在源代码文件的开头,也可以包含在 Visual Studio 项目的 AssemblyInfo 文件中

当然,这并不妨碍人们使用 reflection

调用你的方法

【讨论】:

  • Reflection 尊重可访问性级别。如果此关键字如其名称所暗示的那样工作(通过扩展对特定程序集的内部访问),那么反射仍然无法从该属性未指定的程序集调用内部。
猜你喜欢
  • 1970-01-01
  • 2010-11-08
  • 2013-04-22
  • 2010-10-26
相关资源
最近更新 更多