【问题标题】:Class modifier for automatically generated classes自动生成的类的类修饰符
【发布时间】:2010-07-26 18:32:49
【问题描述】:

当我向项目添加新类时,Visual Studio 中新创建的类的类修饰符/访问说明符被省略,从而使其成为internal

有没有一种方法可以在 Visual Studio 设置中指定,每当我要求创建新类时,请将类设为 public

我查看了“工具”->“选项”菜单,但找不到任何东西。我猜它可能在 My Documents\Visual Studio xxxx 文件夹中的 Templates 文件夹中。

【问题讨论】:

    标签: c# visual-studio visual-studio-2008 visual-studio-2010 visual-studio-2005


    【解决方案1】:

    是的,您可以更改文件模板(或仅提供辅助文件模板)like so。但是,在您这样做之前,我会问自己:添加所需的可访问性真的需要那么 很多努力吗?我倾向于在实用主义方面犯错……如果我想要显着不同的模板,我可能会这样做。否则……嗯。

    【讨论】:

      【解决方案2】:

      您必须创建自己的模板来执行此操作,或者使用代码 sn-ps,或者可能是像 ReSharper 这样的工具,它有自己的 sn-p 机制。

      但是,这可能不是一个好主意。您将公开不需要公开的内容。您最好将所有内容都以internal 开头,并仅在需要时将其公开。

      【讨论】:

        【解决方案3】:

        快速搜索一下:

        Prevent Visual Studio from adding default references and usings for new classes

        答案表明你可以更改默认的类模板。

        希望对您有所帮助。

        【讨论】:

          【解决方案4】:

          如果你在一个类上省略修饰符,它是:

          • 内部(非嵌套类)
          • 私有(在嵌套类上)

          我只是想我会把它扔出去(如果省略,它不是总是内部的)。


          但是,如果您真的想更改模板,您通常需要转到安装文件夹(我将使用默认文件夹):

          **C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE**

          在那里,您会找到各种模板文件夹。您正在寻找以下内容(如果您深入挖掘):C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class.zip

          只需更改其中的 Class.cs 文件。哦,如果你把它搞砸了,这里是原始版本:

          using System;
          using System.Collections.Generic;
          $if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
          $endif$using System.Text;
          
          namespace $rootnamespace$
          {
              class $safeitemrootname$
              {
              }
          }
          

          你想要的版本:

          using System;
          using System.Collections.Generic;
          $if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
          $endif$using System.Text;
          
          namespace $rootnamespace$
          {
              public class $safeitemrootname$
              {
              }
          }
          

          【讨论】:

          • 当属性本身是 public 时,唯一一次是“公共”而不被标记为“公共”的东西是 getset 属性构造:) 来自 Jon Skeet 的书: )
          猜你喜欢
          • 2014-01-02
          • 1970-01-01
          • 2012-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多