【发布时间】:2014-09-22 01:53:50
【问题描述】:
我知道有一个“内部”关键字和 [InternalsVisibleTo] 属性。但是如何允许不在同一个程序集中的类级别的类修改私有数据呢?也就是说,只允许程序集中的特定类访问私有数据,而不允许该程序集下的每个类?
我之前在这里How to implement C++ like friend relationship in C#问过这个问题,但不够具体,所以我在这里再问一次。
这里讨论了与 C# 不使用朋友的理论和原因有关的其他讨论 Why does C# not provide the C++ style 'friend' keyword?
【问题讨论】:
-
不要。想出更好的设计,谁需要朋友?这一直是 C++ 中代码臭味的标志。作为替代建议,也许考虑使用接口和显式实现msdn.microsoft.com/en-us/library/aa288461(v=vs.71).aspx
-
@Mick 是的,我完全同意你的看法。但我只是出于好奇和学习/研究目的考虑它,只是想看看我们可以从 C# 中得到什么。
-
我认为 Anders Hejlsberg 会充分了解 C++ 中可用的所有构造,并就如何帮助培养 C# 中的良好实践以及从 C# 中删除哪些 C++ 构造以消除不好的做法,C++ 朋友构造可能属于后一类。这是严重过度耦合设计的标志,当我说一个更好的设计时,我应该指定一个不那么高度耦合的设计。您在下面的回答是过度耦合的例证。
-
看来您将自己的问题标记为骗子,而您所链接的问题的答案几乎与我上面所说的相呼应