LoginSignup
11
9

More than 5 years have passed since last update.

拡張メソッドのグループ化

Posted at

ちょいテクです。

最近、拡張メッソドが楽しくて仕方ないのですが、あまりにも大量に増えすぎると困ります。
また、String型などの、極めて基本的なクラスに対しての拡張メソッドも、増やしすぎていいものかと思います。
そこで、拡張メソッドのグループ化をしたくなります。
こんな感じで実現できました。

filename
    public static class Text
    {
        public static HtmlText ToHtml(this string html, string url)
        {
            return new HtmlText(html, url);
        }

        public static HtmlText ToHtml(this string html)
        {
            return new HtmlText(html, string.Empty);
        }
    }

    public class HtmlText
    {
        public string Text { get; set; }
        public string Url { get; set; }
        public HtmlText(string text,string url)
        {
            Text = text;
            Url = url;
        }

        public IEnumerable<MarkupLanguage.TagClass> GetTag(string tag)
        {
            return MarkupLanguage.TagAnalyze.GetTag(Text, tag);
        }
        public IEnumerable<Web.Link> GetLink()
        {
            return Web.GetLinkForHTML(Text, Url);
        }
        public IEnumerable<Web.Link> GetImageLink()
        {
            return Web.GetImageLink(Text);
        }
        public string TagClear()
        {
            return Web.HtmlTagAllDelete(Text);
        }
    }

こういう感じで、呼び出し専用のクラスを作り、そのクラスを作るための拡張メソッドを作ると、拡張メソッドのグループ化ができると思います。

 var urlList = "HTMLテキスト".ToHtml().GetLink().Select(n => n.Url);

使い方はこんな感じです。スッキリ!

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9