2014-09-29 52 views
0

有沒有辦法通過將兩個點轉換爲一個來改變對Lua中我的C#對象方法的訪問?我想改變這一點:C#Luainterface兩個點

Object:DoSomething(); 

進入這個:

Object.DoSomething(); 

沒有得到任何錯誤。有任何想法嗎?提前致謝。

+2

不是沒有修補Lua。 – lhf 2014-09-29 12:08:35

回答

2

兩條線做不同的事情。 Object:DoSomething()是語法糖Object.DoSomething(Object)。這是將常規對象查找+函數調用轉換爲方法調用的原因。

所以不,沒有辦法做到這一點。

+0

所以,也許我可以在運行前用正則表達式解析我的腳本,替換「.DoSomething(」和「:DoSomething(Object,」)? – 2014-09-29 16:03:45

+1

如果你有'SomeOtherObject.DoSomething()',其中'DoSomething'是一個靜態方法(即它沒有自己的參數)?這會搞砸了。你爲什麼努力避免':'? – 2014-09-29 16:06:14

0

號下面是一個替代...

你可以考慮Object:DoSomething()是一個.NET擴展方法。就像.NET擴展方法一樣,您可以選擇將其稱爲「靜態」方法:

Object.DoSomething(Object);