不能在Enum中添加类.扩展名称空间,因为枚举类型(System)不可用

本文关键字:类型 枚举 System 因为 Enum 添加 空间 扩展名 不能 | 更新日期: 2023-09-27 18:17:41

我有两个项目。

1)一个(库)在命名空间中包含Enum扩展方法:

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

2)第二,控制台应用程序,它有一个引用到上面的库,并试图使用它的新方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Enum.Extensions;
namespace XMLExtensionsTest
{
  public enum ProcesInfo
  {
    ifCreate = 1,
    ifRun1 = 2,
    IfRun2 = 4,
    IFRun3 = 8
  }
  class Program
  {   
    static void Main(string[] args)
    {
      ProcesInfo enumInfo = ProcesInfo.ifCreate;      
      enumInfo = enumInfo.Add(ProcesInfo.IfRun2);
      bool value = enumInfo.Has(ProcesInfo.ifCreate);
      bool value2 = enumInfo.Has(ProcesInfo.ifRun1);
      bool value3 = enumInfo.Has(ProcesInfo.IfRun2);
      bool value4 = enumInfo.Has(ProcesInfo.IFRun3);
    }
  }
}

现在,因为这个Extensions类,所有标准Enum类型都是不可访问的。我不能写:

public void Test(Enum test)
{
}

但需要:

public void Test(System.Enum test)
{
}

有成千上万的地方使用Enum而不使用"System"。如何添加扩展类而不触及现有Enum类调用?

谢谢!

不能在Enum中添加类.扩展名称空间,因为枚举类型(System)不可用

您可以使用以下三个选项中的任何一个,如果您不/不能更改名称空间

, #3是您的最佳选择
  1. 重命名Enum.Extensions名称空间
  2. 前缀是MyStuff.Enum.Extensions
  3. 别名using MyAlias = Enum.Extensions

您需要更改Enum Librarynamespace。这是你的第一个有Extensions的库项目。

EnumType的名称,而您将其用作namespace,因此存在歧义。