为什么“提取的接口”是内部的而不是公共的?

时间:2010-06-11 15:46:07

标签: visual-studio refactoring conventions

Visual Studio包含一个名为“Extract Interface”的重构函数,它根据类实现生成一个接口。

默认情况下,提取的接口为Internal。问题是,我们最终将所有这些变为Public

有人知道默认为什么是内部的吗?更好的是,有没有办法将其自定义为默认为Public

2 个答案:

答案 0 :(得分:0)

如果您更改接口的Visual Studio模板,它可能会有效(我没有尝试过,但假设这应该有用)。

对于Visual Studio 2008,模板存储在

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates
    \CSharp\Code\1033\Interface.zip"

this answer中详细介绍了这一点。

答案 1 :(得分:0)

我没有参考资料,但我默默猜测它为什么是内部的。

假设您有3个项目/程序集:log4net(第三方API),MyApp.Util和MyApp.Web(Web项目)。 Web引用Util,引用log4net。 Web 引用log4net,你想保持这种方式。

在DAL内部,假设您有一个内部类,并且其中一个成员引用了log4net中定义的类型。它可以是返回类型或方法的参数类型之一,也可以是属性的类型。

假设您从上述类中提取接口,包括引用log4net的上述成员。好吧,如果你将该成员公开(公共接口的一部分)并引用实现它的类型,那么要求 Web项目引用log4net。

通过使界面内部,Web可能继续不知道log4net。