Bom... uma forma que pode ajudar na sua duvida? É criar uma classe com dois metodos: um que seja no estilo chave e valor. Eu utilizo um Dictionary
onde a chave vai ser um string ou qualquer outro tipo e o value vai ser a interface ITransportationStrategy
e o outro metodo para obter o valor.
Ex:
public static class SearchTransport
{
private static IDictionary<string, ITransportationStrategy> strategy = new
Dictionary<string, ITransportationStrategy>
{
{"SEDEX", new Sedex()},
{"JADLOG", new JadLog()},
{"DHL", new DHL()}
};
public static ITransportationStrategy Get(string transport) =>
strategy[transport];
}
Então você pode receber qual tipo de frete voce quer dinamicamente...
TransportationContext transportationContext = new(SearchTransport.Get("SEDEX"));