Dziękuję za próby pomocy. Myślałem, że uda się za darmo bez wysiłku rozwiązania problemu. Rozwiązałem go sam i okazało się, że jest to proste. Problem rozwiązuje rzutowanie static_cast umieszczone w bibliotece CLR/CLI. Poniżej pokazuję jak ja to zrobiłem.
Z plików Enum_Test.h, Enum_Test.cpp, CLR_Enum_Test.h i CLR_Enum_Test.cpp utworzyłem bibliotekę DLL z obsługą środowiska uruchomieniowego CLR (/clr)
Plik Enum_Test.h
#pragma once
#pragma warning (disable : 4430)
#include <sstream>
using namespace std;
namespace Test
{
public enum class Wyliczenia
{
Ja,Ty,On
};
static class FUNKCJE
{
public:
FUNKCJE()
{
};
~FUNKCJE()
{
};
static const string GetEnum(const Wyliczenia wylicz);
}p;
}
Plik Enum_Test.cpp
#pragma once
#include "Enum_Test.h"
namespace Test
{
const string Test::FUNKCJE::GetEnum(const Wyliczenia wylicz)
{
switch (wylicz)
{
case Wyliczenia::Ja:
{
return "Wybrano Ja";
break;
}
case Wyliczenia::Ty:
{
return "Wybrano Ty";
break;
}
case Wyliczenia::On:
{
return "Wybrano On";
break;
}
default:
return "Nic nie wybrano";
break;
}
}
}
Plik CLR_Test.h
#pragma once
#include "Enum_Test.h"
using namespace std;
using namespace System;
using namespace System::Reflection;
using namespace Test;
namespace CLR_Test
{
public enum class Wyliczenia
{
Ja,Ty,On
};
public ref class FUNKCJE
{
protected:
Test::FUNKCJE* Przeliczanie = nullptr;
public:
FUNKCJE()
{
Przeliczanie = new Test::FUNKCJE();
}
!FUNKCJE()
{
delete Przeliczanie;
Przeliczanie = nullptr;
}
~FUNKCJE()
{
}
const String^ GetEnum(const Wyliczenia wylicz)
{
Test::Wyliczenia a = static_cast <Test::Wyliczenia>(wylicz);
return gcnew String(Przeliczanie->GetEnum(a).c_str());
}
};
}
Plik CLR_Test.cpp
#pragma once
#include "CLR_Enum_Test.h"
using namespace System;
using namespace std;
namespace CLR_Test
{
}
Teraz tylko napisać kod C# z odwołaniem do utworzonej biblioteki i gotowe
Plik Enum_Test.cs
using CLR_Test;
namespace CS_Enum_Test
{
class Program
{
static void Main(string[] args)
{
Wyliczenia w = Wyliczenia.Ja;
FUNKCJE fun = new FUNKCJE();
Wyliczenia wyl = Wyliczenia.Ja;
string ja = fun.GetEnum(wyl);
wyl = Wyliczenia.Ty;
string Ty = fun.GetEnum(wyl);
wyl = Wyliczenia.On;
string On = fun.GetEnum(wyl);
int a = 0;
}
}
}