나는 C#에서 IRC Bot을 가지고 있으며, 잠시 동안 Lua Scripting을 사용하고 싶습니다. 봇 시작시에 함수를 등록하고 새로운 파일이 추가되었는지 감지 한 다음로드하려고합니다. 나는 새 파일/스크립트 기능을 이미 다시로드했지만 실행하면 "개체 참조가 개체의 인스턴스로 설정되지 않습니다."라는 메시지가 나타납니다. 사용자 정의 함수에서 사용자가 사용할 수 있기를 원합니다."개체 참조가 개체의 인스턴스로 설정되지 않았습니다"를 사용하지 않고 함수를 등록하십시오.
public Lua lua;
public void RegisterFunctions() {
lua.RegisterFunction("print", this, typeof(DashLua).GetMethod("ConsoleOut"));
}
#region Custom Functions for Lua
public void ConsoleOut(String line) {
if (line == null) {
Console.WriteLine("Script error: print() can't be null.");
} else {
Console.WriteLine(line);
}
}
주()에서 로봇의 나는 현재 단 2 줄이 있습니다 :
DashLua dash = new DashLua();
dash.RegisterFunctions();
'lua' 필드를 초기화하고 있습니까? 예외가 던져지고 있는지 알면 도움이됩니다. –
필드를 초기화하려면'public Lua lua = new Lua(); 대신'public Lua lua;'를 사용해야합니다. "Lua.cs"파일에서 이미 초기화했고 DashLua 클래스를 주 클래스로 호출 했으므로 현재 Main() void에 초기화 할 필요가 없습니다. –
다음과 같이하면 또 다른 방법이 될 것이다.'public void RegisterFunctions() { lua = new Lua(); 이 오류가 발생합니다 : ** 추가 정보 : 시도가 이루어졌습니다. (예 : "WriteLine", 새 유형 [] {typeof (String)}) 잘못된 형식의 프로그램을로드하는 중입니다. (HRESULT 예외 : 0x8007000B) ** –