当前位置:  开发笔记 > 编程语言 > 正文

使方法/属性对一个类可见,对其他类隐藏

如何解决《使方法/属性对一个类可见,对其他类隐藏》经验,为你挑选了2个好方法。

我有一个类Server与IRC的服务器连接对话.它包含已知Users 的列表,并根据需要创建它们.

我有两个涉及User课程的问题:

    任何人都可以创建一个实例User.我只希望Server班级能够做到这一点.

    如果用户(事物User描述)更改了他/她的名字(或其他信息,如加入的频道),则Server班级可以自行更改.但是,其他课程也可以!我想禁止其他类触及这些信息(使其只读给他们).

我该如何解决这两个问题?在C++中,可以通过使用friend关键字并使ctor和setName(等)私有来解决它.

是否有一个C#关键字可以允许某个方法可以被指定的类访问?这可以解决我的问题.



1> cletus..:

老实说,我发现friend源自C++ 的访问权限是糟糕设计的症状.你最好修理你的设计.

首先,谁真的关心是否有人创建用户?真的有关系吗?我问这个问题是因为似乎有时我们的程序员会担心那些根本不会发生的事情,或者如果他们这样做,那就无关紧要了.

如果您真的关心,请执行以下操作之一:

使用户成为一个界面.服务器可以实例化实现它的私有类; 要么

使用户成为没有公共构造函数的服务器的内部类,因此只有服务器可以实例化它.

可见性黑客(其中C++中的朋友是一个,Java中的包访问都是很好的例子)只是在寻找麻烦而不是一个好主意.



2> Bevan..:

.NET世界中最接近的friendinternal可见性.

请注意,如果您的两个类位于单独的程序集中,则可以使用InternalsVisibleTo属性来允许一个程序集可以看到另一个的内部.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有