У меня есть контроллер MVC, который вызывает службу (GlobalService) для выполнения операций на основе переданных параметров, GlobalService выполняет определенные операции в своем собственном репозитории, а также другие службы платформы, созданные с использованием фабрики. Если я хочу передать определенную конфигурационную информацию, такую как строки подключения, и некоторые пути пользовательского интерфейса для использования для изображений и т.д., К объекту IPlatform создается лучший способ сделать это.
MVC Controller → Gloabl Service → IPlatformFactory.GetPlatform("platform1") ---> Platform1 (строка connString, строка filePath)
Рассмотрите возможность добавления параметров в конструктор Platform
, как это сделано в DbContext
public interface IPlatform
{
...
}
public abstract class Platform : IPlatform
{
public Platform(string connString , string filePath)
{
...
}
}
public sealed class Platform1 : Platform
{
public Platform1(string connString, string filePath) : base(connString, filePath) {}
}
public interface IPlatformFactory
{
IPlatform GetPlatform(string code, string connString, string filePath);
}
public class PlatformFactory : IPlatformFactory
{
public IPlatform GetPlatform(string code, string connString, string filePath)
{
...
return new Platform1(connString, filePath);
}
}