Каким образом можно правильно описать метод для объединения пути к файлу?
Такое необходимо по той ситуации что стандартный 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 {
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Как открыть окно в C# WPF Prism вначале работы без shell? нужно окно авторизации, и если все нормально shell
Есть число int(32)Как его конвертировать в массив байтов с MSB first? Перечитал все что нашел о "GetByte", но у меня с этим методом почему-то число просто...