Есть ли способ создать метод для обобщенной c коллекции пользовательского класса в C#? - PullRequest
0 голосов
/ 30 апреля 2020

Мне было интересно, возможно ли это вообще. Так как с IEnumerator / IEnumerables у меня не все в порядке, возможно, есть способ сделать это, я не знаю. Я полагаю, что это будет go примерно так:

public namespace cookietest
{
    public static class Program{
        public List<Cookie> cookies = new List<Cookie>();
        CookieJar cookieJar = cookies.ToCookieJar();
    }

    public class Cookie{
        public int size;
        //Implementatin of ToCookieJar()
    }
}

Я понимаю, что есть лучшие дизайнерские решения и что это не действительно проблема, но я заинтересовался и не смог ничего об этом не найти.

1 Ответ

1 голос
/ 30 апреля 2020

То, что вы ищете, называется методы расширения .

С учетом ссылочного типа, такого как List<T>, вы можете «расширить» его своими собственными методами, например так:

public static class Program
{
    public List<Cookie> cookies = new List<Cookie>();
    CookieJar cookieJar = cookies.ToCookieJar();
}

public class Cookie
{
    public int size;
}

public static class CookieExtensions
{
    public static CookieJar ToCookieJar(this IEnumerable<Cookie> list)
    {
        return new CookieJar(list);
    }
}
...