Функции GDScript не являются объектами, как в Python. Таким образом, вы не можете напрямую ссылаться на функцию.
Тем не менее, вы можете косвенно ссылаться на них по имени, используя их связанный экземпляр.
Например, со следующей функцией:
func hello():
print('Hello')
Вы можете вызывать функцию для экземпляра по имени:
call('hello') # prints 'Hello'
Вы можете сохранить экземпляр и имя с помощью funcref()
: [1112 ]
var ref = funcref(hello_object_instance, 'hello')
ref.call_func() # prints 'Hello'
takes_func_ref_to_call_later(ref) # later, prints 'Hello'
FuncRef.call_func()
делает то же самое, что и object_instance.call()
, просто оборачивает его в объект.
Из-за этого, как показали Object.connect()
и друзья, общая функция для функций обратного вызова такова:
func deferred_finish(param1, param2, callback_obj, callback_func):
# ... do something
callback_ref = funcref(callback_obj, callback_func)
func _process(delta):
if _finished:
callback_ref.call_func()
func _enter_tree():
deferred_finish('hello', 'world', self, 'finished_callback')
Надеюсь, это поможет. Дайте мне знать, если вам нужны какие-либо разъяснения.
Вы реализуете эквивалент сессии NHIBERNATE на шаблон запроса, который является хорошей конструкцией в NHibernate. В то время как я не могу сказать, что 100% наверняка, что это применимо к EF это, скорее всего. Далее подробно останавливанием на других шаблонах управления сеансами является Сессия на Бизнес-Разговор, который позволяет NHibernate расширять проведение сессии по продолжительности HttpSession путем разъединения и повторного подключения сессии в противоположность уничтожению и созданию. Если EF позволяет подобную способность в противоположность хранению статического открытого соединения, Вы могли бы посмотреть на то, как я реализовал тот шаблон с помощью AOP на моем блоге через мой профиль.
При попытке реализовать что-то как NHibernate, делает с его Сессией, я думаю, что это - хорошая идея иметь этот вид шаблона. Я знаю наверняка, что в LinqToSql реализация объекта контекста больше похожа на entrypoint класс, это - действия как фасад. Я хотел бы думать, что LinqToEntities подобен. У Вас могла быть реализация фабрики для получения datacontext к модели, где можно переработать datacontext. Если Вы идете одиночным элементом, путь рассматривает узкое место, доступность и ответственность одноэлементного объекта.
Ознакомьтесь с этой записью в блоге , в которой представлены некоторые дополнительные сведения о создании синглтона для контекста Entity Framework и почему это не работает в ASP.NET, и предлагает решение, которое делает нечто подобное, как вы предлагаете.