Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46

Одна DLL для хранения всех данных приложения

28.03.2012, 19:11. Показов 2312. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть проект программы, состоящий из Windows Application и множества Class Library.
Захотелось создать ещё одну DLL, которая бы включала в себя все данные, которые используются в вычислениях. Что-то я сделал не так и у меня данные не сохраняются при передаче управления между разными DLL.
Вот сделал простейший пример - DLL Data для хранения данных, там хранится целая величина A=1;
В одной из DLL вызываю метод, который присваивает A=100;
Возвращаюсь из метода - а A опять равно 1... Уже сутки бьюсь... Помогите пожалуйста.
Вот код проекта Application и два Class Library:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Windows.Forms;
 
using Data;
using ClassLibrary1;
 
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Data1 MyData;
        public Dll1 MyDll;
        public Form1()
        {
            InitializeComponent();
            MyData = new Data1();
            MyDll = new Dll1();
            MyDll.Metod1();
            int r = MyDll.Metod2();
            int a = MyData.A;
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
using System;
using System.Text;
 
namespace Data
{
    public class Data1
    {
        public int A = 1;
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Text;
 
using Data;
 
namespace ClassLibrary1
{
    public class Dll1
    {
        public Data1 MyData;
        public int Metod1()
        {
            MyData = new Data1();
            return 0;
        }
        public int Metod2()
        {
            MyData.A = 100;
            return MyData.A;
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2012, 19:11
Ответы с готовыми решениями:

Кастом папка для хранения dll(References)
Во общем поставил SDK от гугла через NuGet и он зафигачил просто миллион dll'ок прямо возле exe'шника... Как сделать так, что бы все...

Как сделать, чтобы одна форма приложения открывалась поверх абсолютно всех других?
Подскажите как сделать окно браузера(справка программы, поверх всех окон(форм приложения), некоторые формы специально сделаны OnTop) и в...

Готовые решения для безопасного хранения файлов для приложения
Добрый день. Являюсь самым новым новичком в программировании на Objective-C, прошу совета. Для простейшего приложения, показывающего html...

15
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
28.03.2012, 21:39
Архитектура приложения у Вас неправильная.
А проблему можно решить так:
C#
1
2
3
4
public class DataContainer
{
  public int Data {get; set;}
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class DllLib1
{
  public DataContainer container {get; set;}
  public DllLib1(DataContainer cont)
  {
     this.container = cont;
  }
 
  public void AddNum(int num)
  {
     this.container.Data = this.container.Data + num;
  }
  public void SetNum(int num)
  {
      this.container.Data = num;
  }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MainProgram
{
  public void Main()
  {
     DataContainer c = new DataContainer();
     DllLib1 lib = new DllLib1(c);
     lib.SetNum(100500);
     //lib.container.Data will be equal to the number 100500, or
     //c.Data will be equal to the number 100500 too, 'cause
     //lib.container refer to the variable c
     lib.AddNum(-500);
     //lib.container.Data == 100000 &&
     //c.Data == 100000
  }
}
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
28.03.2012, 21:39
Надо бы учебник почитать.
В конструкторе Form1 ты создаешь один экземпляр MyData , а в методе Dll1.Metod1 другой, изменения в котором никак не затрагивают экземпляр в Form1.
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
28.03.2012, 22:16  [ТС]
Цитата Сообщение от sau Посмотреть сообщение
Надо бы учебник почитать.
да вроде кучу прочитал... но там теория... а мне нужна практика - примеры... вот тогда бы я понял...
на C++ всё понятно, уже 20 лет на нём пишу, а тут всё время непонятки
Может подскажешь "хороший" учебник...
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
28.03.2012, 22:58
ха ха ), после 20 лет на С++ такие ошибки нереально допускать ...
Книжки не читаю уже давно, так что не в курсе.
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
28.03.2012, 23:00
Цитата Сообщение от Бухрыч Посмотреть сообщение
Может подскажешь "хороший" учебник...
Как по мне, так самый лучший учебник по C# это Герберт Шилдт "Полный справочник по C#"
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
28.03.2012, 23:31  [ТС]
Alex Sabaka, Так Вы бы не могли исправить мой проект, чтобы он делал то, что я хочу?
То есть, если в DLL я присвоил переменной A значение 100, то и в форме я бы вывел в файл A равное 100.
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
29.03.2012, 00:24
Ну я вам уже привел пример. Там все просто, если бубут вопросы - обращяйтесь.
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
29.03.2012, 00:46  [ТС]
Alex Sabaka, попробую завтра утром разобраться с Вашим примером... Пока очень много незнакомых слов там.
Цитата Сообщение от Alex Sabaka Посмотреть сообщение
public class DataContainer { public int Data {get; set;} }
и непонятно что надо писать после using
ну утро вечера мудреннее...
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
29.03.2012, 12:38  [ТС]
Alex Sabaka, Сделал всё как в Вашем примере... .
Если мой начальный проект работал, хоть и неправильно, то теперь проект даже не собирается.
Кстати, если в моём проекте выбросить DLL с данными , а данные перенести в DLL с кодом, то всё работает нормально. Может моя задумка принципиально невозможна? Помогите пожалуйста.
Вложения
Тип файла: rar WindowsApplication1.rar (19.4 Кб, 5 просмотров)
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
29.03.2012, 15:06
Вы проект неправильно собрали. Вам бы нужно что-нибудь почитать про C#, например, как я уже говорил, Г. Шилдта "Полный справочник по C#"
Вот вам исправленый проект, только у меня нету 2008 студии, так что проект в 2010, но код вы можете посмотреть в обичном текстовом редакторе.
Вложения
Тип файла: zip WindowsApplication1.zip (97.2 Кб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
29.03.2012, 23:57  [ТС]
Alex Sabaka, Скачал и почитал Г. Шилдта "Полный справочник по C#", cобрал Ваш последний присланный проект... никакого сдвига. Выкладываю копию экрана после попытки собрать проект. Помогите исправить ошибки.
Вложения
Тип файла: rar 4.rar (121.4 Кб, 9 просмотров)
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
30.03.2012, 22:41
Ну конечно же нету сдвига, Вы же не добавили референсы на библиотеки. Просто добавьте в референсы для Форм1 ссылки на ДллЛиб1(или как там оно называется) и на Дата, а к ДллЛиб1 добавьте референс на Дата.
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
30.03.2012, 23:39  [ТС]
Ну азы то я знаю... и конечно я бы добавил в нужные референсы, как делал это в своём проекте, когда было что добавлять... Но здесь библиотек не собираются! Добавлять нечего!!! Что делать?... мне казалось это элементарно...
0
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
30.03.2012, 23:58
Конечно, Ватсон, это элементарно если бы Вы прочитали хоть одну книжку, хоть пару страниц ).
З.Ы Не удержался от комментария )
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 46
31.03.2012, 00:01  [ТС]
sau, а по конкретнее... ближе к теме можно... неужели трудно написать, думаю не больше двух- трёх строк...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2012, 00:01
Помогаю со студенческими работами здесь

Обновление приложения, какой хостинг использовать для хранения файлов
Привет всем. Сейчас взялся за систему обновления своего приложения(пока что играюсь) в принципе уже реализовал примитивную систему, но...

QSettings или singleton для хранения глобальных настроек приложения
Есть некое приложение в котором множество виджетов, причем есть группы виджетов, с определенным форматированием, например одна из групп...

Создать в SQL Server базу данных для хранения данных
В общем пригласили меня на собеседования, дали тестовое задания, мог бы помочь кто? Как с этим разобраться... По идее это не очень...

Спроектировать базу данных для хранения данных по организациям и признакам
Помогите, спроектировать базу данных для хранения данных по организациям и признакам.

Консоль. Контейнер для хранения данных с возможностью сортировки данных по любому полю.
Здравствуйте. Задача следующая: пользователь вводит в консоль табличные данныев формате (это пример), представленном ниже: Где...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru