2016-12-14 1 views
0

Я создаю библиотеку DLL класса, которая будет использоваться другими. Я не знаю, каким будет этот проект, каким будет имя проекта и т. Д. Когда все будет сказано и сделано, все, что я буду делать, это передать им DLL для любого ссылающегося проекта.Лучший подход к чтению и записи значений из DLL во время выполнения

Проблема заключается в том, что мне нужно, чтобы моя DLL могла читать и загружать ключи/значения из проекта во время выполнения. Проект передаст ключ/значения моей DLL, и указанная DLL выполнит чтение и запись этих ключей/значений. Я обнаружил, что существует несколько способов сделать это:

1) Пользовательские настройки из меню Настройки/AppConfig

2) Создать новый файл XML для чтения и записи из

Однако оба пути не автоматизирован. Исправьте меня, если я ошибаюсь:

Для 1) стороне проекта придется вручную создать файл настроек с ключом/значениями, которые мне нужны для DLL.

Для 2) стороне проекта придется вручную создать XML-файл с ключом/значениями, необходимыми для моей DLL. Кроме того, моей DLL нужно будет знать, где этот XML будет сохранен проектом, ссылающимся на него (чтобы я мог читать и писать из него из DLL)

Здесь мне нужна помощь. Есть ли способ, который я могу достичь чтения и записи значений из моей DLL во время выполнения без проекта, который должен выполнить какую-либо ручную работу? А если нет, какой был бы лучший подход к этому? Передайте файл настроек людям, которые будут ссылаться на мою DLL?

Спасибо!

+0

Как насчет метода в вашей DLL, чтобы получить/установить значения? – Pikoh

ответ

1

Ну, клиент (проект, использующий вашу dll) должен будет сделать что-то, чтобы использовать вас dll, справа. Ваш выбор заключается в том, чтобы определить способ конфигурации или изменить свой интерфейс, чтобы вызывающий может напрямую предоставить пары ключ-значение. Вы все еще можете использовать настройки приложения из конфигурационного файла приложения-потребителя. Ваша DLL может получить к ним доступ, используя System.Configuration.ConfigurationManager, не зная о том, где приложение работает. Единственное, что должен сделать другой проект - предоставить настройки, которые вам нужны в конфиге. Но, может быть, вы могли бы подробнее рассказать о том, что вы на самом деле пытаетесь сделать, «чтение ценностей» не очень специфично.

+0

Привет господин Бергер. Каждый клиент будет иметь свой собственный «файл локальных настроек» с ключом/значениями, такими как «имя», «id» и т. Д., Которые хранятся в БД в Интернете, и копия загружается в файл в проекте. пользователь меняет свое «имя» из проекта exe, моя dll загрузит его в БД и обновит файл локальных настроек. В то же время моя DLL должна будет иметь возможность читать из этого файла локальных настроек для определенных проверок, таких как , является ли новое имя таким же, как и прежнее имя, прежде чем загружать его в БД? – Moo33

+0

Ну ладно. В этом случае ваша DLL могла бы легко стать хранителем конфигурационного файла. Таким образом, ваш интерфейс будет выставлять методы для изменения данных (т. е. 'YourClass.SetUserName (string)'). При вызове ваши методы применяют проверку, синхронизацию локального файла конфигурации и базы данных. Чтобы получить текущую конфигурацию, вызывающее приложение будет запрашивать ваш компонент (т. е. 'YourClass.GetCurrentConfig() ') –

+0

Вы имеете в виду иметь отдельный файл конфигурации для моей DLL? Я попытался установить свой dll.config для копирования всегда, но он, похоже, не появляется в моей выходной папке. Или вы имели в виду, передавая ссылку файла настроек проекта на мою dll? – Moo33

Смежные вопросы