.Net WebBrowser 体系结构

本文关键字:体系结构 WebBrowser Net | 更新日期: 2023-09-27 17:56:39

我正在使用.Net webBrowser进行html解析

在我的程序中,我有一个 MainForm(表单对象)和初始化 MainForm 的程序类。

在表单中,我有webBrowser初始化,当我进入网站时,我需要处理不同的页面(从中获取数据/下载文件等)

今天,我将形式本身中的所有情况都按区域分隔为函数:

public partial class MainForm : Form
{
   if(DoTypeA())
   {
      ...
   }
   ...
   #region TYPEA
   private bool DoTypeA()
   {
      HtmlDocument doc = webBrowser.Document ....
      ...
   }
   #endregion TYPEA
   ...
}

在类型 A 中,我重定向到页面并从中解析大量数据

我可以在不同的类中分离该功能吗? 以使代码更清晰。

问题是webBrowser及其所有事件都发生在表单类中。

在这种情况下

,最好的设计模式/架构模式是什么。

我尝试过什么:

  • webBrowser对象设为公开。
  • 在获取webBrowser实例的MainForm中制作 prop。

我看到的唯一解决方案是将 webBrowser 作为参数传递给DoTypeA(webBrowser);但是我可以在不传递参数的情况下做到这一点吗?

谢谢。

.Net WebBrowser 体系结构

我想到的一个灵魂是DI模式

class Types
{
   IWebDriver webBrowser = null;
   public Types(IWebDriver wb)
   {
      if(wb == null)
         throw new NullReferenceException();
      this.webBrowser = wb;
   }
   public bool DoTypeA()
   {
       HtmlDocument doc = webBrowser.Document //working fine
   }
}

来自 MainForm 的调用

Types dt = new Types(webBrowser);
if(dt.GetTypeA())
{
   //done.
}