域驱动设计中的映射

时间:2014-03-05 14:41:40

标签: c# design-patterns mapping domain-driven-design domain-events

我正在尝试找到一种方法从一个对象映射到另一个对象,其中第一个是域模型,另一个是表示相同内容的对象,但是用于完全不同的用途。一个简单的例子:

public class SnmpDeviceService {

    private readonly Dictionary<int, 3rdPartyLibObj> devices;
    private SnmpLibrary snmp;

    public SnmpDeviceService() {
        snmp = new SnmpLibrary();
        snmp.ObjOnlineEvent += DeviceOnlineEvent;
    }

    public void Add(MyDevice device) {
        3rdPartyLibObj libObj = new 3rdPartyLibObj(device.IpAddress);
        devices.Add(device.Id, libObj);
        snmp.Observe(libObj);
    }

    public void DeviceOnlineEvent(object sender, args) {
        // Question here!
    }

问题

我现在收到了libObj(不是我的),还有其他信息。我想现在调用域事件,但是另一个侦听某个域事件的服务不知道类型3rdPartyLibObj,他只知道MyDevice。如果它们代表相同的东西但看起来不同,我现在如何从3rdPartyLibObj映射到MyDevice?如果我想在等待DeviceOnlineEvent期间保留MyDevice,我应该如何在我的字典中引用它以保持MyDevice和3rdPartyLibObj在上下文中?

喜欢这个?:

public Dictionary<int id, Tuple<MyDevice, 3rdPartyLibObj>>();

1 个答案:

答案 0 :(得分:0)

如果您不是LibObj,为什么要在上下文中使用它?

告诉我,如果我误解了你的问题...在你的上下文中(有界的上下文定义得很好?)你用于这个东西的对象是MyDevice,而3rdPartyLibObj来自不同的上下文(那么不同的上下文如何通信?你是否想过Context Map或类似的东西?)。如果确切,我建议您限制在您的上下文中使用3rdPartyLibObj(使用反腐败层?)。