C#将字符串转换为Microsoft.Office.Core.MsoAutoShapeType

C#将字符串转换为Microsoft.Office.Core.MsoAutoShapeType,c#,vsto,C#,Vsto,我是C#新手,我正在尝试从JSON文件接收的给定字符串在PowerPoint中创建一个形状 这是在string[]arr\u shape和new\u幻灯片中作为PowerPoint幻灯片运行良好的初始代码: var shape_width = float.Parse(arr_shape[1]); var shape_postion_top = float.Parse(arr_shape[2]); var shape_position_left = float.Parse(arr_shape[3]

我是C#新手,我正在尝试从JSON文件接收的给定字符串在PowerPoint中创建一个形状

这是在string[]arr\u shapenew\u幻灯片中作为PowerPoint幻灯片运行良好的初始代码:

var shape_width = float.Parse(arr_shape[1]);
var shape_postion_top = float.Parse(arr_shape[2]);
var shape_position_left = float.Parse(arr_shape[3]);
var shape_position_height = float.Parse(arr_shape[4]);

PowerPoint.Shape shape = new_slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, shape_position_left, shape_postion_top, shape_width, shape_position_height);
                        
因此,现在我一直在尝试从string arr_shape[5]动态设置形状类型,该类型可以包含

我检查了一些解决方案,如和。我假设解决方案可能是这样的:

Type shape_type = Type.GetType("Microsoft.Office.MsoAutoShapeType."+ arr_shape[5]);
PowerPoint.Shape shape = new_slide.Shapes.AddShape(shape_type, shape_position_left, shape_postion_top, shape_width, shape_position_height);
但它给了我一个错误:

无法从“System.Type”转换为 'Microsoft.Office.Core.MSOAutosapeType'


我非常感谢您的帮助,因为我已经坚持了一个多星期了…

所以我解决了这个问题,感谢您在评论中的指导。我从JSON和MSOAutosapeType接收了作为字符串的枚举形状类型

我的解决方案如下所示:

Office.MsoAutoShapeType shape_type = (Office.MsoAutoShapeType) Enum.Parse(typeof(Office.MsoAutoShapeType), arr_shape[7]);
PowerPoint.Shape shape = new_slide.Shapes.AddShape(shape_type, shape_position_left, shape_postion_top, shape_width, shape_position_height);

您正在尝试将一种类型枚举转换为另一种无法工作的类型枚举。核心枚举仅接受以下值(与类型枚举不同):您可以在数组中存储枚举值(如
msoShapeRectangle
1
)和。感谢您指导我!