0

私は2つのプロジェクトを持っています。

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が使用される場所は何千もあります。既存の Enum クラス呼び出しに触れずに拡張クラスを追加するには?

ありがとう!

4

2 に答える 2

1

次の 3 つのオプションのいずれかを実行できます。名前空間を変更しない/変更できない場合は、#3 が最善の策です。

  1. Enum.Extensions名前空間の名前を変更する
  2. 次のようなプレフィックスを付けますMyStuff.Enum.Extensions
  3. エイリアスが好きusing MyAlias = Enum.Extensions
于 2013-06-10T17:46:11.337 に答える
1

の を変更する必要がありnamespaceますEnum Library。拡張機能を持つ最初のライブラリ プロジェクトはどれですか。

EnumType名前であり、それを として使用しているため、namespaceあいまいさがあります。

于 2013-06-10T17:45:28.987 に答える