Тип C # Enum в Matlab - PullRequest
       1

Тип C # Enum в Matlab

1 голос
/ 11 января 2012

Я использую 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').

Тогда у меня вопрос, как проанализировать несколько значений в перечислении? Спасибо!

1 Ответ

0 голосов
/ 11 января 2012

Имеет ли MatLab, поскольку это Enum.Parse, принимает любые множественные перегрузки, например, тип, значение, значение ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...