Questo pezzo di codice è in molti dei miei metodi, in una certa area del codice base. Non sta violando DRY poiché è un po 'diverso per ogni metodo. Ma mi dà ancora fastidio che 5-8 righe di codice come questo siano in ogni metodo.
Quindi voglio nasconderlo :) La domanda è come.
//e.g /configurators/configjohn/defaultfrontend/active/somejsonfile_versionumber.json
var packageFilter = PackagePath.Filter
.AddPathFilter(StorageConstants.UICONFIGURATION_BASE_CONTAINER)
.AddPathFilter(configurationName.ToLowerInvariant())
.AddPathFilter(uiConfigInfo.Name.ToLowerInvariant())
.AddPathFilter(status.ToLowerInvariant())
.AddFilter(PackagePath.PackageVersion(uiConfigInfo.Version))
.Get();
Ho pensato a una fabbrica in cui avrei potuto fornire il metodo come parametro e avrei recuperato un packageFilter per quel metodo.
Altri consigli?
Grazie!
UPDATE alla soluzione
Finito per creare un tipo statico come mi è stato consigliato di fare;
public class PackagePathCreator
{
public static PackagePath CreateFilter(string configurationName, string segment, string status, string uiConfigName)
{
var packageFilters = PackagePath.Filter;
if (!string.IsNullOrEmpty(segment))
packageFilters.AddPathFilter(segment);
if (!string.IsNullOrEmpty(configurationName))
packageFilters.AddPathFilter(configurationName.ToLowerInvariant());
packageFilters.AddPathFilter(StorageConstants.UICONFIGURATION_BASE_CONTAINER).
AddPathFilter(uiConfigName.ToLowerInvariant()).
AddPathFilter(status.ToLowerInvariant());
return packageFilters;
}
}