Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在方法中传递枚举值_C#_Asp.net_Methods_Enums_Parameter Passing - Fatal编程技术网

C# 仅在方法中传递枚举值

C# 仅在方法中传递枚举值,c#,asp.net,methods,enums,parameter-passing,C#,Asp.net,Methods,Enums,Parameter Passing,我有一个名为SemverPartOption的枚举,它具有以下值: public enum SemverPartOption { Full, Version, Major, Minor, Patch, Micro, Pre, Meta } 然后我有一个方法,它使用这个枚举作为参数: public static string SemverPart(SemverPartOption? Option = SemverPartOption

我有一个名为SemverPartOption的枚举,它具有以下值:

public enum SemverPartOption
{
    Full,
    Version,
    Major,
    Minor,
    Patch,
    Micro,
    Pre,
    Meta
}
然后我有一个方法,它使用这个枚举作为参数:

public static string SemverPart(SemverPartOption? Option = SemverPartOption.Full)
枚举和方法都位于
AppName.Helpers
命名空间和
AppInfo
类中。我正在尝试调用该方法并只传递枚举值。例如:

我要做的是:

Helpers.AppInfo.SemverPart(Helpers.AppInfo.SemverPartOption.Major);
我可以接受的是:

Helpers.AppInfo.SemverPart(Major);
最理想:

SemverPart(Major);
有没有一种方法可以做到这一点而不必经常使用
using
语句


为了清楚起见,我不想使用
using
语句,因为我想在属于不同控制器类的几个Razor视图中调用此方法。

否,您必须添加
using
语句

这不应该是个问题;您的IDE将允许您在键入
Major
时只导入它,而不必手动添加它

如果您有另一个具有相同名称的枚举/类(
Major
),则它将运行,但您可以通过添加更多信息(如
SemverPartOption.Major
,或无论您需要增加多少),或使用

要将此枚举导入每个razor视图,请转到/views/Web.config文件并添加(或调整)以下XML:


如果提供了附加信息(关于在razor页面中使用的信息),您可以使用
~/Views/web.config
文件向razor添加“using”。节点如下所示:

<configuration>
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Web" />
        <add namespace="AppName.Helpers.AppInfo" /> <!-- new addition -->
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>


这是使用AppName.Helpers.AppInfo将
添加到代码文件的传真,但特别适用于@Razor页面。

是否存在命名冲突?e、 g.其他(已包含)名称空间是否具有与需要完全限定名称的名称匹配的方法/枚举?否enum和方法是应用程序中唯一的此类名称。我认为如果不使用
SemverPartOption,您无法直接使用
Major
。Major
有,我可以手动将其放入,问题是我希望能够在多个Razor视图中调用此方法,而不是所有视图都位于同一个控制器类中。这不能放在某个全局命名空间中吗?@aaronmallen:您可以在views/Web.config文件中使用
语句添加“全局”
,这样就不必在每个视图中都显式定义它。这就是您想要的吗?所以在类之外定义枚举。是的,您将无法绕过它。我相信在Java中,编译器会将枚举转换为类中的公共静态字段;不能仅指定为字段的内容。假设C#在幕后也做了同样的事情,那么您也必须始终指定类型。请参阅对Jeroen Vannevel答案的评论以及对问题的编辑。