none
Модульное программирование RRS feed

  • Вопрос

  • Всем привет. Нужна ваша помощь, совет. Разрабатывается программа, в этой программе будет редактор математических моделей. Этот редактор должен будет пользователю позволять создавать свои собственные модели (интерактивно как бы, не писать код). 
    Например у нас есть какая то модель, она описывается каким либо дифф уравнением, имеет какие либо параметры (название, стационарные точки например и т.д), редактор позволяет ввести все эти параметры, а на выходе должна создаваться DLL.
    Направьте в какую сторону мне двигаться, что почитать, и какие технологии, как в runtime создать DLL?
    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:43 MSDN Forums Consolidation (От:Visual C#)
    11 марта 2010 г. 15:46

Ответы

  • А вам необходим парсер или все таки важней создавать dll в рантайме? Если первое, то второе не обязательно.

    По первому вопросу посмотрите на проект numerical methods on C# который содержит парсер мат выражений или поищите кастомный.
    • Помечено в качестве ответа I.VorontsovModerator 12 марта 2010 г. 7:52
    11 марта 2010 г. 22:03
  • Судя по описанию задачи, вам скорее всего подойдет парсер. Зачем создавать DLL? Если вы хотите чтобы пользователь мог редактировать уравнения которые превращались в код, лучше всего сделать так: вставить уже готовый редактор уравнение который поддерживает математическую нотацию (например MathML), потом добавить в программу конвертер (наподобие этого) который умеет превращать эту структуру в C#-объекты. А потом можно просто сериализовывать и десериализовывать эти объекты. Впрочем, саму нотацию тоже можно использовать. Тут особо без разницы.

    Если же вы все же хотите производить DLLки – то подход такой же – с помощью все той же утилиты вы конвертируете математику в C#-код, а потом компилируете этот код средствами .Net (CSharpCompiler и т.д.) в отдельную DLL которую потом можно просто подгружать и использовать.


    - Dmitri Nesteruk
    • Помечено в качестве ответа I.VorontsovModerator 12 марта 2010 г. 7:51
    12 марта 2010 г. 6:33

Все ответы

  • Копать надо в направлении динамического создания сборок. А именно пространство имен System.Reflection.Emit.

    Можно почитать про это в книге: Эндрю Троелсон "Язык программирования C# 2008 и платформа .NET 3.5" 4-е издание
    11 марта 2010 г. 21:12
  • спасибо, посмотрю.

    еще предложения какие-нибудь?

    11 марта 2010 г. 21:55
  • А вам необходим парсер или все таки важней создавать dll в рантайме? Если первое, то второе не обязательно.

    По первому вопросу посмотрите на проект numerical methods on C# который содержит парсер мат выражений или поищите кастомный.
    • Помечено в качестве ответа I.VorontsovModerator 12 марта 2010 г. 7:52
    11 марта 2010 г. 22:03
  • Судя по описанию задачи, вам скорее всего подойдет парсер. Зачем создавать DLL? Если вы хотите чтобы пользователь мог редактировать уравнения которые превращались в код, лучше всего сделать так: вставить уже готовый редактор уравнение который поддерживает математическую нотацию (например MathML), потом добавить в программу конвертер (наподобие этого) который умеет превращать эту структуру в C#-объекты. А потом можно просто сериализовывать и десериализовывать эти объекты. Впрочем, саму нотацию тоже можно использовать. Тут особо без разницы.

    Если же вы все же хотите производить DLLки – то подход такой же – с помощью все той же утилиты вы конвертируете математику в C#-код, а потом компилируете этот код средствами .Net (CSharpCompiler и т.д.) в отдельную DLL которую потом можно просто подгружать и использовать.


    - Dmitri Nesteruk
    • Помечено в качестве ответа I.VorontsovModerator 12 марта 2010 г. 7:51
    12 марта 2010 г. 6:33
  • спасибо за ответ
    12 марта 2010 г. 11:34