Matlab中的C#枚举类型

本文关键字:类型 枚举 中的 Matlab | 更新日期: 2023-09-27 18:20:07

我使用的是Matlab R2010b,在C#下有一个枚举:

[Flags()]
public enum  MyFormat
{
  value1 = 0,
  value2 = 1,
  value3 = 2,
  value4 = 4,
  value5 = 8
}

在一个方法中,我有一个参数,它是一种格式:

public void MyMethod(MyFormat format, double number)
{
   ....
}

然后我使用Matlab,我想使用MyMethod方法。按照标准方式,这里是代码:

>>format = MyNamespace.MyFormat.value1;
>>MyNamespace.MyMethod(format, 15);

当我试图将"多值"作为MyFormat:传递时,问题就出现了

>>format = MyNamespace.MyFormat.value1 | MyNamespace.MyFormat.value2;
>>MyNamespace.MyMethod(format, 15);

我找到了一个简单的解决方案,但它需要更新版本的Matlab R2011a。这里找到的另一个解决方案是在Matlab:中实现这个函数

function enum = EnumParse(typename, value)   
type = System.Type.GetType(typename);
values = regexp(value, ', ', 'split');
enum = cell(1, length(values));
for i = 1:length(values)
    enum{i} = System.Enum.Parse(type, values{i});
end
end

但是,行System.Type.GetType('MyNamespace.MyFormat')返回一个null值,而对于例如System.Type.Get-Type('System.String')类型,它不是null。

我的问题是如何将多个值解析为一个枚举?谢谢

Matlab中的C#枚举类型

做MatLab,因为它是Enum。Parse以任何多个重载为例类型,值,值。。。?