仅传递方法中的枚举值

时间:2014-06-06 18:01:19

标签: 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.Full)

枚举和方法都存在于AppName.Helpers命名空间和AppInfo类中。我试图能够调用该方法,只是传递枚举值。例如:

我必须做的事情:

Helpers.AppInfo.SemverPart(Helpers.AppInfo.SemverPartOption.Major);

我会好的:

Helpers.AppInfo.SemverPart(Major);

最理想:

SemverPart(Major);

有没有办法在不必经常使用using声明的情况下执行此操作?

要明确我不想使用using语句,因为我想在属于不同控制器类的几个Razor视图中调用此方法。

2 个答案:

答案 0 :(得分:1)

不,您必须添加using声明。

这不应该是一个问题;当您键入Major而不必手动添加它时,您的IDE将为您提供导入它的选项。

如果您有另一个名称相同的枚举/类(Major),那么它会起作用,但您可以通过添加更多信息(例如SemverPartOption.Major或者您需要去的更多信息)来解决这个问题up),或使用an alias

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

 <system.web.webPages.razor>
    <host
      factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="AppName.Helpers.AppInfo" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

答案 1 :(得分:1)

鉴于附加信息(关于剃刀页面中使用的信息),您可以添加&#34;使用&#34;使用~/Views/web.config文件进行剃须。节点如下:

<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>

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