C# 无法在Enum.Extensions命名空间中添加类,因为此时Enum类型(系统)不可用

C# 无法在Enum.Extensions命名空间中添加类,因为此时Enum类型(系统)不可用,c#,.net,C#,.net,我有两个项目 1) 命名空间中包含枚举扩展方法的一个(库): namespace Enum.Extensions { public static class EnumerationExtensions { public static bool Has<T>(this System.Enum type, T value) { try { return (((int)(object)type & (int)(obj

我有两个项目

1) 命名空间中包含枚举扩展方法的一个(库):

namespace Enum.Extensions
{
  public static class EnumerationExtensions
  {

    public static bool Has<T>(this System.Enum type, T value)
    {
      try
      {
        return (((int)(object)type & (int)(object)value) == (int)(object)value);
      }
      catch
      {
        return false;
      }
    }
  }
}
现在,由于该扩展类,所有标准枚举类型都无法访问。 我不能写:

public void Test(Enum test)
{

}
但需要:

public void Test(System.Enum test)
{
}
有数千个地方使用Enum时没有“系统”。 如何在不接触现有枚举类调用的情况下添加扩展类


谢谢

您需要更改
枚举库
名称空间
。这是您的第一个具有扩展的库项目


Enum
类型
名称,您将其用作
命名空间
,因此存在歧义。

您可以执行以下三个选项中的任意一个,如果您不/无法更改命名空间,则最好选择3

  • 重命名
    Enum.Extensions
    名称空间
  • 在它前面加上类似于
    MyStuff.Enum.Extensions的前缀
  • 它类似于使用MyAlias=Enum.Extensions

  • 您可以将枚举扩展名重命名为其他名称吗。。。像
    Enumeration.Extensions
    ?哦,天哪,我以为所有的扩展方法都可以通过它们的名称空间看到,但事实证明“this”是一个关键词。谢谢只需在库或控制台项目的顶部添加
    Enum=System.Enum
    ,就可以了?如果我将名称空间“namespace Enum.Extensions”更改为“namespace Utils.Enum.Extensions”,那么就可以了。但只是为了好玩,如何保持“namespace Enum.Extensions”并让所有的“Enum”调用正常?@John要完成第二个任务,请按照我在控制台项目类中说的做(或者无论您有多少类
    System.Enum
    。如下所示:
    使用System;使用System.Collections.Generic;使用System.Linq;使用System.Text;使用Enum.Extensions;使用Enum=System.Enum;命名空间XMLExtensionsTest{
    。您不必更改任何其他内容。您可能指的是类似于
    Enum=System.Enum
    的别名。我不知道名称空间使用别名是否有意义。
    public void Test(System.Enum test)
    {
    }