C 中的友元及其在 C# 中的缺失
在 C 中,“friend”关键字将类的私有成员的访问权限授予外部类。这允许在不影响封装的情况下控制私人信息的共享。然而,这个概念并没有直接在 C# 中实现。
弥合差距:InternalsVisibleTo
C# 提供了一个名为 InternalsVisibleTo 的属性,作为最接近“朋友”的属性。它允许程序集访问另一个程序集的内部成员(包括私有成员)。这提供了有限形式的受控访问。
考虑以下场景:
要实现此目的,您可以将以下属性放置在ClassA 的 AssemblyInfo.cs 文件:
[assembly: InternalsVisibleTo("TesterAssembly")]
将“TesterAssembly”替换为包含 Tester 类的程序集的名称。通过这样做,您将授予 TesterAssembly 对 ClassA 内部成员的访问权限。
示例用法
为了说明其工作原理,这里有一个简单的示例例如:
ClassA.cs
public class ClassA { private int _privateMember; public int PublicMember { get; set; } }
Tester.cs
using ClassAAssembly; public class Tester { public void Test() { // Access private member through InternalsVisibleTo var instance = new ClassA(); instance._privateMember = 10; } }
通过应用 InternalsVisibleTo 属性,您可以在程序集级别控制内部成员(甚至私有成员)的可访问性,从而无需进行托管代码测试向外部消费者公开敏感数据。
以上是C# 如何实现 C 的'friend”关键字对私有成员的受控访问的功能?的详细内容。更多信息请关注PHP中文网其他相关文章!