Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
1

Как сгенерировать библиотеку, чтобы ее функции принимали параметром пользовательский класс

16.10.2012, 19:03. Показов 808. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый время суток.

Каким образом можно решить следующую задачу: есть основное приложение, по ходу выполнения которого генерируется dll библиотека с набором функций. Как можно сделать, чтобы у этих функций параметры были не простыми типами int, double и т.д., а созданными ранее собственными классами?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string code = @"
using System;
 
namespace my_dll
{
    public class dll
    {
        public static interval func(interval x, interval y)
        {
            //return new interval(x.lower+y.lower,x.upper+y.upper);
            return (-x*sin(sqrt(abs(x)))-y*sin(sqrt(abs(y)));
        }
    }
 
}
";
            string output = @"F:\my.dll";
            CompilerParameters cp = new CompilerParameters { OutputAssembly = output, GenerateExecutable = false };
            cp.ReferencedAssemblies.Add("System.Core.Dll");
            CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(cp, code);
при компиляции ругается на отсутствие класс interval
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 19:03
Ответы с готовыми решениями:

Как сделать, чтобы Edit1 и Edit2 принимали значение размера матрицы после OpenDialog1?
Как сделать чтобы edit1 и edit2 принимали значение размера матрицы после opendialog1. надеюсь вы...

Перегрузить оператор вывода, чтобы заданный пользовательский класс выводился в файл произвольным образом
Добрый вечер. Помогите, пожалуйста. Есть класс class chelovek { private: string name; string...

Как сделать, чтобы "*" принимали как обычную переменную?
как сделать чтобы * принимали как обычную переменную??

Как сгенерировать библиотеку dll через visual studio 2013
Скачал архив curl-7.40.0, не знаю что дальше. Как сгенерировать нужную библиотеку через visual...

5
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
16.10.2012, 19:50 2
C#
1
cp.ReferencedAssemblies.Add("длл с твоим классом");
0
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
16.10.2012, 20:34  [ТС] 3
теперь при попытке вызова следующей функции

C#
1
2
3
4
5
public
      interval calculate_2(interval x, interval y)
{
      return (interval)method.Invoke(null, new object[] { x, y });
}
выбивается следующая ошибка:

Невозможно преобразовать объект типа "intervals_by_wol4ara.interval" к типу "inter.interval".

Вызываемая функция находится в самой программе.
0
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
16.10.2012, 21:43 4
проект покажите
0
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
17.10.2012, 13:05  [ТС] 5
весь проект смысл скидывать не вижу, какой момент необходимо прояснить?

Добавлено через 14 минут
Цитата Сообщение от wol4aravio Посмотреть сообщение
весь проект смысл скидывать не вижу, какой момент необходимо прояснить?
а точнее - не могу по рабочим обстоятельствам

Добавлено через 14 часов 53 минуты
Если более подробно о моей задаче, то выглядит она следующим образом: в принципе решается задача многомерной оптимизации, поэтому много раз вычисляется значение одной и той же функции в разных точках. Вычисление функций реализовывал с помощью деревьев. В виду того, что решаемые задаче крайне многомерны (порядка 20+ переменных), то решение занимает очень долгое время и основной объем времени тратится на подсчет функции, в основе которого лежит обход дерева. Была мысль один раз динамически сгенерировать dll файл в котором бы была задана необходимая функция, подключить его, вытащить оттуда метод через Reflections (MethodInfo) и потом вызывать. Получается, что у меня в программе есть некоторый собственный класс interval, и мне необходимо чтобы в качестве параметров функции в dll файле были именно interval, реализованные в самой программе.
0
33 / 31 / 7
Регистрация: 16.08.2012
Сообщений: 126
17.10.2012, 16:14 6
Цитата Сообщение от wol4aravio Посмотреть сообщение
Невозможно преобразовать объект типа "intervals_by_wol4ara.interval" к типу "inter.interval".
так тут налицо две сборки, intervals_by_wol4ara и inter. в них объявлены два типа с одним именем interval. так что придется определить
C#
1
2
3
4
public inter.interval calculate_2(inter.interval x, inter.interval y)
{
 return (inter.interval)method.Invoke(null, new object[] { x, y });
}
0
17.10.2012, 16:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 16:14
Помогаю со студенческими работами здесь

Как использовать пользовательский класс в windows forms
Изначально был консольный проект. В нем есть класс Net. Все конструкторы и деструктор имеются, все...

Как добавить пользовательский класс в Windows Forms?
Код писался под консоль, что-то вроде калькулятора для комплексных чисел, с перегрузкой каждого...

Какую библиотеку подключить чтобы получить доступ к функции sleep()?
Какую библиотеку подключить чтобы получить доступ к функции sleep()? C++

Пользовательский класс Queue: как изменить порядок вывода элементов?
Привет всем такой вопрос возник перешел к изучению конструктора и деструктора вопрос заключаеться в...

Как привязать пользовательский класс к стандартным элементам управления на форме
Здравствуйте!!! У меня есть класс, который реализует масштабирование изображения. Есть форма...

Реализовать пользовательский класс "Список" и функции-члены для создания, просмотра и удаления списка
Добрый день. Имеются несколько функций для работы с однонаправленным списком. Не получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru