不能在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类调用?
谢谢!
您可以使用以下三个选项中的任何一个,如果您不/不能更改名称空间
, #3是您的最佳选择- 重命名
Enum.Extensions
名称空间 - 前缀是
MyStuff.Enum.Extensions
- 别名
using MyAlias = Enum.Extensions
您需要更改Enum Library
的namespace
。这是你的第一个有Extensions的库项目。
Enum
是Type
的名称,而您将其用作namespace
,因此存在歧义。