0

我有两个项目。

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

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 的地方有数千个。如何在不触及现有 Enum 类调用的情况下添加 Extensions 类?

谢谢!

4

2 回答 2

1

您将需要更改namespace. Enum Library这是您的第一个具有扩展的库项目。

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

于 2013-06-10T17:45:28.987 回答
1

您可以执行以下三个选项中的任何一个,如果您不/不能更改命名空间,#3 是您最好的选择

  1. 重命名你的Enum.Extensions名字空间
  2. 用类似的东西作为前缀MyStuff.Enum.Extensions
  3. 喜欢的别名using MyAlias = Enum.Extensions
于 2013-06-10T17:46:11.337 回答