C# 无法在Enum.Extensions命名空间中添加类,因为此时Enum类型(系统)不可用
我有两个项目 1) 命名空间中包含枚举扩展方法的一个(库):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
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的前缀
您可以将枚举扩展名重命名为其他名称吗。。。像
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)
{
}