Я искал другие ответы, похожие на эту тему, но не нашел ничего общего. Я пытаюсь присвоить значения некоторым перечислениям в C#, используя значения, которые помечены как static const в файле C++/CLI, которые скомпилированы в DLL и упоминаются в проекте C#. Все это прекрасно работает, за исключением того, что оно дает мне «выражение, назначенное на« XXX », должно быть постоянным», чего я ожидал бы, если значение C++/CLI не было константой. Мой код C++/CLI автоматически генерируется из файлов сторонних поставщиков, поэтому мои варианты изменения этой стороны крайне ограничены.Назначить значение перечислению C# из C++/CLI const
Вот некоторые выдержки:
Файл ++/CLI C:
public ref class SEVERE_LEVEL sealed {
public:
static const System::Int32 VALUE = 200;
private:
SEVERE_LEVEL() {}
};
И C# файл:
public enum LoggerLevel {
SevereLevel = SEVERE_LEVEL.VALUE // This gives the "must be constant" error
}
Есть несколько различных уровней журнала, каждый из которых определен в их собственный отдельный класс в файле C++/CLI. Я хочу использовать перечисление C# как тип параметра в некоторых вызовах метода, чтобы обеспечить передачу только допустимых значений. Любые идеи, как сделать эту работу или предложения по альтернативным проектам?
Это довольно причудливый генератор кода. Я бы просто попытался замять объявление 'public enum class', как и должно было быть. –