首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DI中NEventStore组件的对象组合

DI中NEventStore组件的对象组合
EN

Stack Overflow用户
提问于 2014-11-10 00:10:54
回答 1查看 419关注 0票数 6

我正在将NEventStore添加到我现有的项目中,并且使用DI。

我希望在我的MVC控制器中注入一个CommonDomain.Persistence.EventStore.IRepository实例。这个接口的The only implementationEventStoreRepository

这个类依赖于IConstructAggregatesonly implementation I findAggregateFactory,它被标记为内部,位于测试项目中,文件名非常奇怪。

我不应该使用IRepository吗?(为什么它被标记为公共的,并且没有被任何内部代码所使用?)

我正在查看用于操作聚合的示例项目hereIRepository

或者我应该自己实现IConstructAggregates

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-22 00:46:42

我在为同样的事情而挣扎,我认为简单的答案是:

如果您不使用快照,测试项目中的实现将运行良好。实际上,如果给您快照,我会添加一些代码来抛出异常。

如果使用快照,则必须使用与下面描述的快照末尾类似的方法:http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

本质上,问题是您将从IConstructAggregates返回的对象将在它上重放事件流,将在紧接在中传递的快照之后的版本开始。

只是猜测一下,但我认为在CommonDomain中可能没有“正式”实现的原因是:

  • 如果您有支持快照的Aggregates,那么无论如何您都必须在它们上实现GetSnapshot(),并且您可能希望构建一个IConstructAggregates实现,该实现可以以某种方式重新水合物(可能是ISupportSnapshots接口)。
  • 您可能希望使用DI容器来构建聚合,而不仅仅是Activator.CreateInstance<T>()

这里的代码片段使用与测试项目中的AggregateFactory相同的逻辑:- http://pastebin.com/cFESMiTz

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26834901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档