我目前正在编写一个网络爬虫,它从互联网上检索信息。简化后看起来像这样。
数据访问项目
- 检索原始数据的对象
- 将原始数据解析为对象的对象(!!)
- 解析器返回的实体。
现在,我正在创建实际的解析器,我将像这样使用它:
using Application.DataAccess;
using Application.DataAccess.Entities;
namespace Application{
public class TestScraper{
public static ScrapeIt()
{
var source = DataAcces.Retriever.Retrieve("http://example.com");
DataAccess.Entities.Entity entity = DataAccess.Parser.Parse(source);
//Do stuf with source here.
}
}
}
正如您所看到的,解析器返回一个实体。然而,这是在 DataAccess 命名空间中,但是,它没有任何意义......它是一个圆圈,我真的不知道如何解决这个问题。好吧,我可以想出一些办法,比如在这些层之间创建另一个层。
但我只是想知道,你会如何解决这个问题。对此什么是好的(或最佳实践)。
您可以通过将两个类引用的内容分解到一个新类中,然后旧类都引用新类来修复循环引用。
因此,在您的情况下,您可以将实体移出 DataAccess 并移入可能由 DataAccess 和应用程序使用的新实体命名空间。
通过这样做,你可以开始
A <--> D
并最终得到
A --> E
D --> E
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)