C#: Как объявить класс с общими методами и использовать его без объявления?
Занимаюсь разработкой на C# и столкнулся с одной проблемой. Для понимания, есть несколько форм, которые используют одни и те же методы. Для оптимизации этого было принято решение выделить методы в отдельный класс и обращаться к ним через имя класса. Основная проблема, с которой я столкнулся, это необходимость объявлять класс перед его использованием. Собственно, вопрос, каким образом необходимо оформить класс, чтобы можно было использовать его методы в других классах без объявления этого самого класса? Вот кусок моего класса, который нужно использовать как внешний:
namespace ObjectAdmin
{
public static class CommonFunctions
{
public static string RoleCollectionToString(List<string> rList)
{
string result = string.Empty;
rList.ForEach(r => result += r + "|");
if (!string.IsNullOrWhiteSpace(result)) result = result.Remove(result.Length - 1, 1);
return result;
}
}
}
То есть, например, при обращении к методу
RoleCollectionToString(List<string> rList)
мне приходится объявлять класс CommonFunctions, а я хочу как-то так:
string someString = CommonFunctions.RoleCollectionToString(someList)
Ответы (2 шт):
public static class CommonExtensions
{
public static string RoleCollectionToString(this List<string> rList)
{
string result = string.Empty;
rList.ForEach(r => result += r + "|");
if (!string.IsNullOrWhiteSpace(result)) result = result.Remove(result.Length - 1, 1);
return result;
}
}
string someString = someList.RoleCollectionToString();
Вы можете использовать импорт статических членов, если используете C# 6 и выше, вот небольшой пример, в котором мы импортируем статические члены Вашего класса и System.Linq.Enumerable:
using static ObjectAdmin.CommonFunctions;
using static System.Linq.Enumerable;
namespace SomeUsingCommonFunctions
{
class Foo
{
void Bar()
{
var list = Range(0, 10).Select(i => i.ToString()).ToList();
var someString = RoleCollectionToString(list)
}
}
}