【发布时间】:2010-06-11 15:46:06
【问题描述】:
Visual Studio 包含一个名为“Extract Interface”的重构函数,它基于类实现生成一个接口。
提取的接口默认是内部的。问题是,我们最终将几乎所有这些都更改为Public。
有谁知道为什么它默认是内部的?更好的是,有没有办法将其自定义为默认为Public?
【问题讨论】:
标签: visual-studio refactoring conventions
Visual Studio 包含一个名为“Extract Interface”的重构函数,它基于类实现生成一个接口。
提取的接口默认是内部的。问题是,我们最终将几乎所有这些都更改为Public。
有谁知道为什么它默认是内部的?更好的是,有没有办法将其自定义为默认为Public?
【问题讨论】:
标签: visual-studio refactoring conventions
如果您更改接口的 Visual Studio 模板,它可能会起作用(我没有尝试过,但假设这应该起作用)。
对于 Visual Studio 2008,模板存储在
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates
\CSharp\Code\1033\Interface.zip"
这在this answer中有更详细的描述。
【讨论】:
我没有参考,但我猜想为什么它默认是内部的。
假设您有 3 个项目/程序集:log4net(第 3 方 API)、MyApp.Util 和 MyApp.Web(一个 Web 项目)。 Web 引用 Util,后者引用 log4net。 Web 确实不引用 log4net,而您希望保持这种方式。
在 DAL 内部,假设您有一个内部类,其成员之一引用了 log4net 中定义的类型。它可以是返回类型或方法的参数类型之一,或属性的类型。
假设您从上述类中提取了一个接口,包括上述引用 log4net 的成员。好吧,如果您将该成员设为公共(公共接口的一部分)并引用实现它的类型,那么您要求 Web 项目引用 log4net。
通过将接口设为内部,Web 可能会继续不了解 log4net。
【讨论】: