我知道这可能是一个愚蠢的问题,但我不得不问。
访问修饰符(例如protected
private
)会影响扩展方法的可见性吗? (无论他们是在课堂上还是在方法本身上)
如果是这样,我可以在隐藏其类时显示扩展方法吗? (至少在集会之外)
答案 0 :(得分:4)
private
将隐藏每个人的方法。
protected
对静态方法没有任何意义。
您可以将您的课程Internal
设置为隐藏其他程序集。
答案 1 :(得分:2)
来自How to: Implement and Call a Custom Extension Method:
1.定义一个包含扩展方法的静态类。 该类必须对客户端代码可见。
2.使用至少实现扩展方法作为静态方法 与包含类相同的可见性。
因此,包含类应该对代码可见,您将在其中使用该方法。扩展方法本身应至少具有相同的可见性(不低于)。
回答这个问题,如果可以隐藏包含的类,但在程序集之间保持扩展方法可见:不,你不能。您可以自己尝试:只需在一个程序集中创建一个带有简单扩展方法的静态类(扩展您喜欢的任何类);制作课程internal
和方法public
。显然,您将无法在任何其他程序集中使用该方法以及整个包含类。虽然它确实遵循上面指定的第二个规则,但它确实打破了第一个规则,因为使用扩展方法对代码可以看到必须。
扩展方法是用于调用static
方法的语法糖。所以,想象一下,如果你想调用一个无法访问包含类的简单静态方法。那会有用吗?绝对不是。