我在C#中有一個IRC Bot,我現在想使用Lua腳本。在bot啓動時,我想註冊函數,並檢測是否添加了新文件,然後加載它。我已經做了新的文件/重載腳本功能,但是當我點擊運行時,我得到「對象引用未設置爲對象的實例。」我希望用戶能夠使用自定義功能。註冊不使用它們的函數「未將對象引用設置爲對象的實例。」
下面是當前的代碼:
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);
}
}
在Main()機器人的我目前僅有2行:
DashLua dash = new DashLua();
dash.RegisterFunctions();
你正在初始化'lua'字段嗎?這將有助於瞭解是否拋出異常。 – 2014-09-20 21:10:37
必須使用'public Lua lua;'而不是'public Lua lua = new Lua();'來初始化該字段。由於我已經在「Lua.cs」文件中初始化了它,並且我將DashLua類調用到了我的主類中,所以目前沒有必要在Main()void中初始化它。 – 2014-09-20 21:15:21
另一種方法來說,如果我做這樣的事情:'public void RegisterFunctions(){lua = new Lua(); (「Print」,typeof(Console).GetMethod(「WriteLine」,new Type [] {typeof(String)}));}'我會得到這個錯誤:**其他信息:嘗試加載格式不正確的程序。 (來自HRESULT的異常:0x8007000B)** – 2014-09-21 13:46:19