1

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

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

4

2 回答 2

4

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

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

您可以创建您的课程Internal,使其对其他程序集隐藏。

于 2013-08-28T23:28:54.397 回答
2

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

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

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

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


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

扩展方法是调用方法的语法糖static。所以想象一下,如果你想调用一个无法访问包含类的简单静态方法。那行得通吗?当然不。

于 2013-08-28T23:35:29.083 回答