Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 命名空间中有多个枚举:类型或命名空间;性别“;命名空间中不存在_C#_Silverlight_Visual Studio 2012_Enums - Fatal编程技术网

C# 命名空间中有多个枚举:类型或命名空间;性别“;命名空间中不存在

C# 命名空间中有多个枚举:类型或命名空间;性别“;命名空间中不存在,c#,silverlight,visual-studio-2012,enums,C#,Silverlight,Visual Studio 2012,Enums,我在Visual Studio 2012中有一个Silverlight 5项目,我在Web项目中定义了以下两个枚举: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace myProject.Web.MyEnums { public enum AccountStatus { Active, Suspended,

我在Visual Studio 2012中有一个Silverlight 5项目,我在Web项目中定义了以下两个枚举:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace myProject.Web.MyEnums
{
    public enum AccountStatus
    {
        Active,
        Suspended,
        Inactive,
        Closed
    }

    public enum Gender
    {
        Male,
        Female
    }
}
我现在尝试在Silverlight项目中的一个视图中使用这些枚举。在我的一个方法中,我尝试使用这些函数。有关章节如下:

myObject.AccountStatus = myProject.Web.MyEnums.AccountStatus.Active;
myObject.Gender = myProject.Web.MyEnums.Gender.Male;

第一行很好用。第二行给出了错误“类型或名称空间名称”Gender“在名称空间myProject.Web.MyEnums中不存在…”我已尝试清理项目并重建,但错误保持不变。它违背了所有逻辑,因为“Status”和“Gender”枚举都是声明的,但一个有效,另一个无效。我还尝试在不同的文件中声明这两个枚举,但这也不起作用。这看起来真的很奇怪-可能是Visual Studio 2012的bug?你知道如何解决这个问题吗?

我可以验证你的代码在VS 2012上运行良好。您还需要验证一些其他事项

  • 确保解决方案中的所有相关项目都已设置为生成
  • 确保如果基础项目包含某些引用,例如System.Web.Extensions,则依赖项目也必须包含相同的引用

上面的第二点导致了一些非常模糊的错误,没有弄清楚错误所在。

我偶然发现了为什么名称空间中存在一个枚举,而另一个不存在

看起来Web项目中声明的枚举不会自动在Silverlight项目中可用。只有在Web项目中的某个地方使用了枚举,它才会实际包含在名称空间中,从而在Silverlight项目中可用。我不确定这是否符合设计,或者实际上是Silverlight中的一个bug

我在Web项目的某个地方使用了“AccountStatus”枚举作为变量,而没有使用“Gender”枚举。这就是为什么一个可用而另一个不可用的原因

我所做的只是在我的DomainContext类中的一个函数中声明一个类型为“Gender”的变量,尽管除了声明它之外我什么都不做(我不认为它必须在DomainContext类中——我希望只要您在Web项目的任何类中声明这样的变量,它就可以工作。)

(作为参考,我声明的方式是定义一个函数,该函数只期望“性别”作为变量):


一旦我声明了这一点,我的Silverlight项目中就可以使用性别枚举。如果我没有在Web项目中声明这样的变量,Silverlight项目就无法使用该枚举。确实是奇怪的行为,但这解决了我的问题。

首先编译哪个项目?您使用的是Web项目的最新版本吗silverlight项目中的引用?实际上,我已经对它进行了测试,我注释掉了使用枚举的两行代码,以便两个项目都能成功地完全重新编译。然后我一行一行地取消注释。当我取消注释第一行时,一切都很好。当我取消注释第二行时,Visual Studio underl用红色标出给定的错误。因此,是的,即使在使用web项目的最新版本时也会发生这种情况。这是我见过的最奇怪的错误之一。如果使用
};
而不仅仅是
}
结束枚举会发生什么?同样的问题?是的,我尝试过。同样的问题。
public void DoNothingWithGender(Gender myGender) { /* Do nothing */ }