Здравствуйте, господа.
Такая ситуация. Допустим имеется интерфейс, типа:
public interface IUserStorageInfo
{
string GenerateStoragePathForFile(string fileName,string projectName,Guid entityGuid);
string GenerateStoragePathForFile(string fileName,EntityTypeEnum entityTypeEnum);
string GenerateStoragePathForFile(string fileName,Datetime dt);
}
У этого интерфейсам есть разные (пока три) реализации. Причем каждой реализации нужен только один GenerateStoragePathForFile, все остальные честно бросают NotImplementedException. Полный ужас и идиотизм, согласен. Продолбал момент, что называется. И вот сейчас задумался как это дело унифицировать. Единственное, что приходит на ум -- создать метод типа
string GenerateStoragePathForFile(string fileName,StorageData sd);
И каждая реализация будет лезть в этот StorageData по потребностям. Вроде вариант нормальный, взывающая сторона заполняет релевантной инф-ей объект StorageData, и каждая реализация берет то, что нужно. Можно наследоваться от класса, и передавать параметры в конструкторе. Проблема в том, что некоторые реализации я пихаю в контейнер(TinyIoc), и все используют этот экземпляр (по сути singleton).
Что скажете, посоветуете? Мне пока вариант с унифицированным объектом больше всего нравится.