Каким образом можно правильно описать метод для объединения пути к файлу?
Такое необходимо по той ситуации что стандартный Path.Combine в .NET 2.0 не имеет перегрузок для передачи неограниченных параметров, т.е. в настоящее время, он принимает всего 2.
Я понимаю что я могу сделать свой метод, передавать в него params string[]
public static class Path
{
public static string Combine(params string[] args)
{
string result = string.Empty;
foreach (string pathPart in args)
{
result = System.IO.Path.Combine(result, pathPart);
}
return result;
}
}
но мне кажется есть более изощренный способ.
Мне удалось найти один изощренный способ в этом ответе на английском Stack Overflow. Суть его заключается в том, чтобы добавить Extension Method расширяющий System.String, который вызывает метод Path.Combine.
public static class StringExtensions {
public static string CombineWith(this string path1, string path2) {
return Path.Combine(path1, path2);
}
}
Таким образом, передачу массива параметров можно будет осуществить путем цепочки вызовов:
string path = @"C:\test".CombineWith("one").CombineWith("two.txt");
Это решение будет работать при двух условиях:
Для компиляци Extension Method необходим ExtensionAttribute, которого нет в .NET Framework 2.0. К счастью, компилятор поддерживает "утиную типизацию", поэтому достаточно лишь объявить этот атрибут в своем проекте. Пример ниже взят отсюда.
namespace System.Runtime.CompilerServices {
[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
public class ExtensionAttribute : Attribute {
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей