gpt4 book ai didi

c# - 域对象之间的通信

转载 作者:行者123 更新时间:2023-11-30 22:13:44 26 4
gpt4 key购买 nike

我正在尝试寻找一种可用于在域对象之间进行通信的模式。

如果两个对象中的条件都满足,我想提交对域对象的更改。

到目前为止,这是我想出的。在示例中,域对象捕获任务的状态。 DoSomeWork 会在 t1 上调用,如果满足某些条件,则会创建一个包含完成处理程序的 UnitOfWorkUnitOfWork 传递给 t2,如果条件正确,则工作单元完成。

var t1 = new Task();
var t2 = new Task();

var unitOfWork = t1.DoSomeWork();
t2.DoSomeOtherWork(unitOfWork);

Assert.IsTrue(t1.WorkComplete);

public class Task
{
public Boolean WorkComplete { get; private set; }

public UnitOfWork DoSomeWork()
{
UnitOfWork result = null;
if (/* Some condition */)
{
result = new UnitOfWork(() => this.WorkComplete = true);
}
return result;
}

public void DoSomeOtherWork(UnitOfWork unitOfWork)
{
if (/* Some condition */)
{
unitOfWork.Complete();
}
}
}

public class UnitOfWork
{
protected Action Handler { get; private set; }

public UnitOfWork(Action handler)
{
this.Handler = handler;
}

public void Complete()
{
this.Handler.Invoke();
}
}

最佳答案

Domain events可能会这样做。它们允许简单的聚合间通信 - Eric Evans描述为他希望包含在蓝皮书中的关键要素

域事件允许您描述您域中发生的事情,然后域的其他部分可以响应它。例如。 OrderConfirmed 可能是一个事件,然后它可以在其他上下文中被处理。可能需要有人打包等等。可能需要发送电子邮件确认。然后不同的订阅者负责对该事件使用react。领域事件以发生的事情命名。这些与您对可能无法发生的域发出的请求的命令形成对比。发生了域事件

Jimmy Bogard 在他的 DDD primer series 中解释了用法

关于c# - 域对象之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com