2009-09-25 2 views
1

C# 응용 프로그램에 스크립팅을 추가합니다. CSharpCodeProvider를 통해 루아와 C# 사이에서 논쟁을 해왔습니다.C# 개체를 Lua 스크립팅에 노출

내가 사용하는 언어와 상관없이, 내 주요 응용 프로그램에서 객체/배열을 액세스/조작 할 수있는 스크립트가 필요합니다. C#을 사용하면 너무 많은 문제없이 내 개체와 인터페이스 기능을 노출 할 수 있어야합니다.

그러나 Lua에서는 노출 된 함수를 통해서만 응용 프로그램 개체에 액세스 할 수있는 것처럼 보입니다. 나는 예를 들어 어레이와 같이 비 - 덩어리 인 인터페이스를 가질 수있는 방법을 알 수 없다. 나는 Array1Set (index, value)/Array1Get (index) 함수 또는 ArraySet (array_no, index, value)/....가 필요합니다. 이것을 구현하는 우아한 방법이 있습니까? 배열을 루아 머신에 복사하고 조작 한 다음 다시 내 응용 프로그램으로 가져오고 싶지 않습니다.

감사

+1

Lua 언어 커뮤니티는 매우 익숙하고 새로운 사용자에게 도움이되지만 맞춤법에 대해서도주의해야합니다. 루아 어는 달에 대한 포르투갈어의 고유 명사입니다. 대문자로 표기하지만 대문자가 아니기 때문에 대문자로 표기하십시오. – RBerteig

답변

3

당신은 루아와 .NET 사이의 완전한 통합을 지원하는 LuaInterface 프로젝트를 살펴 보셔야합니다. LuaInterface에 대한 더 자세한 정보는 구글에 문의하여 토론, 샘플, 아이디어 등 유용한 페이지를 찾아보십시오.

언어 루아 및 애플리케이션 간의 개체 공유의 일반적인 방법은 객체 인스턴스 자체 (루아 GC 객체의 수명 관리를시키는) 또는 어느 하나를 함유하는 userdata__index()__newindex() 메타 메소드 (및 기타)을 정의하는 것 인스턴스에 대한 포인터 (GC와의 신중한 협조 필요). 메타 메소드를 사용하면 루아 코드가 마치 루아 테이블에 저장된 것처럼 객체의 필드를 조작 할 수 있습니다.

+0

큰 감사, 이것은 내가 찾고 있었던 것이다! 내 인터넷 검색은 LuaInterface를 찾지 못했습니다. – Aaron

관련 문제