C#Enum类型在Matlab中

时间:2012-01-10 21:51:24

标签: c# matlab enums

我正在使用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.GetType('System.String')类型。

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

1 个答案:

答案 0 :(得分:0)

MatLab,因为它的Enum.Parse会带来任何多重载荷 类型,价值,价值......?