J'ai une interface pour contenir les informations de configuration de connexion pour l'accès au service web :
public interface IServiceConnectionConfiguration
{
string Username { get; }
string Password { get; }
string ChannelEndpointUrl { get; }
string MediaEndpointUrl { get; }
string PlayerlEndpointUrl { get; }
string PlaylistEndpointUrl { get; }
}
J'ai une classe fabrique qui renvoie l'instance de service spécifique au type de service demandé.
public static class ServiceClientFactory
{
public static void Configure(IServiceConnectionConfiguration config)
{
_config = config;
}
public static T GetService() where T : class, IServiceClient
{
}
}
La fabrique est appelée comme
Channel channelService = factory.GetService();
Ce que j'essaie de comprendre, c'est une façon élégante pour le code de la fabrique de résoudre les URL de point de terminaison pour les types passés en fonction de l'objet de configuration passé lors de l'initialisation. Par exemple, si le paramètre de type passé est "channel", il devrait prendre le "ChannelEndpointUrl" lors de la construction du "ChannelService".
J'ai pensé à utiliser des attributs sur la classe de configuration pour décorer les URLs de point de terminaison avec le type de service auquel ils correspondent, mais cela semble être une mauvaise conception.
Des idées ?