我有2017年和2012年的视觉工作室。 我创建的项目仅适用于VS2012(我真的不知道为什么,还有一些其他安装只能在VS2012上安装)。
这是我的代码的一部分。 例如:
enum Colors
{
blue = 0,
green = 1,
red = 2,
}
public Class LED
{
private ComponentLED[] _arr;
public LED()
{
//Here I create the array and fill him with the objects.
}
private ComponentLED GetLEDObjectByColor(string color)
{
//This line don't work
//('System.Enum' does not contain a definition for 'Parse'
int index = (int)( (Colors)Enum.Parse(typeof(Colors), color) );
return _arr[index];
}
}
据我所知:System.dll没有定义一些功能。 我看到的唯一适用于Enum类的函数是: Enum.Equals Enum.ReferenceEquals
所以我认为这个问题可能出现在system.dll中。
也许您知道问题是什么或如何解决。我非常感谢你。
这里有一些关于我当前system.dll的信息
路径:C:\ Program Files(x86)\ Microsoft .NET Micro Framework \ v4.2 \ Assemblies \ le \ System.dll
运行时版本:v4.0.30319
版本:4.2.0.0
和申请信息: 目标框架:.Net Micro FrameWork 4.2(它最大 - 无法改变它)
答案 0 :(得分:0)
.NET MicroFramework是一个非常精简的.NET框架版本,可以在嵌入式系统上运行。为了适应这些系统的严格内存限制,.NET基础库的许多功能都被剥离,只留下最重要的功能。 The correct .NET MicroFramework system library guidance for enums can be found here。而且你会发现它并不包含任何Parse选项。
在Color enum解析的情况下,您可能必须基于底层的int值实现自己的代码。这也将使这些有限的系统更快。
.NET MicroFramework开发在过去几年中大幅放缓,但最近新团队已经开始为它开发并将其移植到Visual Studio 2017.一个很好的介绍可以be found on Channel9和构建的代码2017年可以跟踪in this GitHub issue。
答案 1 :(得分:0)
谢谢。 所以最佳解决方案是......
private ComponentLED GetLEDObjectByColor(string color)
{
if(Colors.blue.ToString() == color)
return _arr[(int)Colors.blue];
//And continue it until I passed all the enums...
}