Я использую
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\MyProgram"
В качестве пути для хранения нескольких файлов используется моя программа. Я бы не хотел вставлять один и тот же фрагмент кода по всему моему приложению.
Мне нужно убедиться, что:
- Путь не может быть случайно изменен после его установки
- Классы, которым это необходимо, имеют к нему доступ.
Я считал:
- Делая это синглтоном
- Использование инжектора зависимости конструктора
- Использование внедрения зависимости свойств
- Использование АОП для создания пути, где это необходимо.
У каждого есть свои плюсы и минусы.
Синглтон - любимый мальчик для битья. Я не против его использования, но есть веские причины избегать его, если это возможно.
Я уже активно использую инъекцию конструктора в Касл Виндзор. Но это строка пути, и Windsor не очень корректно обрабатывает зависимости типа системы. Я всегда мог обернуть это в классе, но это кажется излишним для чего-то столь же простого, как передача значения строки. В любом случае этот маршрут добавил бы еще один аргумент конструктора для каждого класса, где он используется.
Проблема, с которой я сталкиваюсь при внедрении свойства в этом случае, заключается в том, что существует большое количество косвенных указаний от того, где значение установлено там, где оно необходимо. Мне понадобится очень длинная очередь посредников, чтобы добраться до всех мест, где она использовалась.
AOP выглядит многообещающе, и я все равно планирую использовать AOP для регистрации, так что это, по крайней мере, звучит как простое решение.
Есть ли другие варианты, которые я не рассматривал? Неужели я не согласен с оценкой вариантов, которые я рассмотрел?