Я использую 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') возвращает мне нулевое значение, тогда как оно не является нулевым, например, с типом System.Type.GetType ('System.String').
Тогда у меня вопрос, как проанализировать несколько значений в перечислении?
Спасибо!