2014-09-29 4 views
0

Есть ли способ изменить доступ к моим методам объектов C# в Lua, превратив две точки в одну? Я хочу изменить это:C# Luainterface две точки

Object:DoSomething(); 

в этом:

Object.DoSomething(); 

без получения каких-либо ошибок. Есть идеи? Заранее спасибо.

+2

Не без исправления Lua. – lhf

ответ

2

Две линии делают разные вещи. Object:DoSomething() - синтаксис сахара для Object.DoSomething(Object). Это то, что превращает обычный поиск объекта + вызов функции в вызов метода.

Так нет, нет никакого способа сделать это.

+0

Итак, возможно, я могу проанализировать свой скрипт с регулярным выражением перед его запуском, заменив «.DoSomething (« на »: DoSomething (Object,«? –

+1

Что произойдет, если у вас есть 'SomeOtherObject.DoSomething()' где 'DoSomething' является статический метод (т. е. он не принимает параметр «self»)? Это будет испорчено. Почему вы так стараетесь избегать ':'? –

0

No. Вот альтернатива ...

Вы можете рассмотреть Object:DoSomething() быть метод расширения .NET. Точно так же, как метод расширения .NET, вы можете назвать его как «статический» метод:

Object.DoSomething(Object);