ちょいテクです。
最近、拡張メッソドが楽しくて仕方ないのですが、あまりにも大量に増えすぎると困ります。
また、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);
使い方はこんな感じです。スッキリ!