Вы в основном спрашиваете, как использовать внешнюю конфигурацию без фактической внешней. Если логика (или ее отсутствие) этого утверждения не очевидна, то, что вы хотите, не возможно.
Способ обмена чем-либо между различными классами и / или проектами - это класс, скорее всего, в библиотеке классов. Если вам нравится, вы можете создать статический класс «констант» для хранения строки подключения:
public static class Constants
{
public const string ConnectionString = "foo";
}
Однако это то, что называется «анти-паттерном». Другими словами, это то, что вы не должны делать. В частности, с чем-то вроде строки подключения, которая, как правило, должна варьироваться в зависимости от среды, чего трудно достичь с помощью такого статического класса. У вас также есть проблема защиты этой строки, поскольку ваше приложение может быть легко декомпилировано для его обнаружения, а также имени пользователя и пароля для доступа к вашей базе данных. Если вы думаете SecureString
, это не сработает. Исходный строковый литерал все еще уязвим, даже если вы пытаетесь создать из него SecureString
.
Короче говоря, внешняя конфигурация является внешней по причине. Это позволяет вашему приложению получать необходимую информацию, не связывая эту информацию с вашим приложением. Вы можете отключить его по своему усмотрению и, что важно, использовать механизмы безопасного хранения для защиты информации в состоянии покоя.
Более того, что-то вроде DAL предполагается абстрактным. Даже если вы обычно создаете его для конкретного приложения, оно должно иметь степень повторного использования. Если вы привяжете к нему строку подключения, то она будет тесно связана с этим конкретным доменом, что обычно является плохим дизайном.
Короче говоря, сохраняйте конфигурацию там, где она есть: на уровне приложения и вне ее.