访问修饰符会影响扩展方法吗?

时间:2013-08-28 23:26:14

标签: c# extension-methods access-modifiers

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

如果是这样,我可以在隐藏其类时显示扩展方法吗? (至少在集会之外)

2 个答案:

答案 0 :(得分:4)

除了扩展方法类中的方法(没有意义)之外,

private将隐藏每个人的方法。

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

您可以将您的课程Internal设置为隐藏其他程序集。

答案 1 :(得分:2)

来自How to: Implement and Call a Custom Extension Method

  

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

     

2.使用至少实现扩展方法作为静态方法   与包含类相同的可见性

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


回答这个问题,如果可以隐藏包含的类,但在程序集之间保持扩展方法可见不,你不能。您可以自己尝试:只需在一个程序集中创建一个带有简单扩展方法的静态类(扩展您喜欢的任何类);制作课程internal和方法public。显然,您将无法在任何其他程序集中使用该方法以及整个包含类。虽然它确实遵循上面指定的第二个规则,但它确实打破了第一个规则,因为使用扩展方法对代码可以看到必须

扩展方法是用于调用static方法的语法糖。所以,想象一下,如果你想调用一个无法访问包含类的简单静态方法。那会有用吗?绝对不是。