Giter VIP home page Giter VIP logo

Comments (8)

ForNeVeR avatar ForNeVeR commented on June 24, 2024

Поскольку мы так или иначе будем хранить внутри интерпретатора список импортированных типов, нет проблемы добавить туда ещё один объект. С лямбдами будет чуть интереснее - поскольку конвенция вызова функций lens и внешних объектов может отличаться, то, возможно, нам придётся эмитить или генерировать специальные врапперы над внешними функциями, переданными нам в рантайме.

from lens.

impworks avatar impworks commented on June 24, 2024

Типы - окей. Будем хранить Dictionary<string, Type>. А вот насчет функций хотелось бы какой-то универсальный способ, чтобы не писать по переопределенной версии AddMethod на все возможные Func<...> и Action<...> - чтобы количество и тип параметров определялись сами.

from lens.

ForNeVeR avatar ForNeVeR commented on June 24, 2024

Для AddMethod вполне можно написать обобщённый вариант, который принимает делегат, а дальше парсит рефлекшеном его параметры. А вот для lens придётся эмитить конкретные строго типизированные врапперы.

Жаль, что в дотнете нельзя иметь список типов-параметров, как в C++ в конструкции template<class T... args>.

from lens.

impworks avatar impworks commented on June 24, 2024

Реквестирую utility-функцию (набор функций), переводящий Func<...>, Action<...> или указатель на метод в нечто вроде:

class MethodInfo
{
    public List<Type> ParameterTypes;
    public Type ReturnType;
}

from lens.

ForNeVeR avatar ForNeVeR commented on June 24, 2024

Вообще-то это всё уже сделано до нас и называется [Delegate.Method : MethodInfo](http://msdn.microsoft.com/en-us/library/system.delegate.method(v=vs.100\).aspx).

Там есть всё необходимое: GetParameters, ReturnType и даже Name.

Мне не кажется, что вообще есть необходимость перегонять эти данные в некую нашу структуру.

От пользователя требуется только преобразовать его лямбду к делегату, если у него именно лямбда. То есть всякие Action<T> и Func<T> мы поддерживаем автоматически.

from lens.

impworks avatar impworks commented on June 24, 2024

Окей, хорошо, так даже лучше.

from lens.

impworks avatar impworks commented on June 24, 2024

Начал запиливать потихоньку в ветке master.

from lens.

impworks avatar impworks commented on June 24, 2024

Типы, методы, свойства импортируются. Можно закрывать.

from lens.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.