访问修饰符是否影响扩展方法

本文关键字:影响 扩展 方法 是否 访问 | 更新日期: 2023-09-27 18:29:21

我知道这可能是一个愚蠢的问题,但我必须问。访问修饰符(例如protected private)是否会影响扩展方法的可见性?(无论它们是在类上还是在方法本身上)

如果是,我可以在隐藏扩展方法的类时显示它吗?(至少在组件外部)

访问修饰符是否影响扩展方法

private将向所有人隐藏该方法,扩展方法类中的方法除外(这毫无意义)。

protected对静态方法没有任何意义。

您可以使类Internal对其他程序集隐藏。

从如何:实现和调用自定义扩展方法:

1.定义一个静态类以包含扩展方法。类必须对客户端代码可见

2.将扩展方法实现为静态方法,其中至少包含与包含类的可见性相同

因此,包含类应该对代码可见,您将在其中使用该方法。扩展方法本身应该至少具有相同的可见性(而不是更少)。


回答问题时,如果可以隐藏包含类,但在程序集之间保留可见的扩展方法否,则不能。您可以自己尝试:只需在一个程序集中使用一个简单的扩展方法(扩展任何您喜欢的类)创建一个静态类;使得类CCD_ 6和方法CCD_。显然,您将不能在任何其他程序集中使用该方法,也不能在整个程序集中使用包含类。尽管它确实遵循了上面指定的第二条规则,但它确实打破了第一条规则,因为containg类必须对使用扩展方法的代码可见。

扩展方法是调用static方法的语法糖。因此,想象一下,如果您想调用一个无法访问包含类的简单静态方法。这样行吗?绝对不是。