C# - 如何在2012年使用2017年的新功能

时间:2017-11-05 15:11:56

标签: c# visual-studio-2012 enums .net-micro-framework

我有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(它最大 - 无法改变它)

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... 
}