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

C# convert string to Microsoft.Office.Core.MsoAutoShapeType

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

这是在 string[] arr_shapenew_slide 中运行良好的初始代码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] 中动态设置形状类型,它可以包含 [=14= 的任何字段].

我检查了一些解决方案,例如 here and here。我认为解决方案可能是这样的:

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);

但它给了我错误:

Cannot convert from 'System.Type' to 'Microsoft.Office.Core.MsoAutoShapeType'

非常感谢任何帮助,因为我已经坚持了一个多星期了...

所以我解决了这个问题感谢评论中的指导。我从 JSON 收到枚举形状类型作为字符串,然后 cast the int to the enum MsoAutoShapeType.

我的解决方案现在看起来像这样:

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);