2

在 C# 中,“内部”类或方法只能从它所在的程序集中调用......我知道 Ruby 没有“程序集”或任何类型的真正包(除了 gems,但它们不是'根本不是一回事),但我想知道是否有办法限制可以调用方法的位置,类似于内部?

我正在更新一个小框架并创建了一个包含 3 个方法的类。我希望能够仅从我的框架调用 3 种方法中的 2 种,并从任何地方调用第三种方法。这在红宝石中可能吗?还是我要解决这个错误,应该创建两个单独的类?或者 ?

4

1 回答 1

2

不幸的是,Ruby 是一种在封装方面非常缺乏的语言。它的容量非常有限,所以,不,没有任何相当于 C# internal 关键字的东西。也许在您的情况下,两个单独的类会更好,但是一个清晰的文档字符串或一个特殊的命名方案可以在没有大量修改的情况下做同样的事情。

此外,您必须注意 internal 关键字对库开发人员来说无非是方便。它并不能真正阻止某人使用标记为内部的方法或类,有办法通过代码注入、AOP 等来规避这些保护。

于 2009-10-26T16:12:15.083 回答