我目前正在试图找到一种方法来映射从一个对象到另一个,其中第一个是域模型,另一个是代表相同事物的对象,但对于完全不同的对象使用。一个简单的例子:域驱动设计映射
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>>();
不是保存一个元组,而是创建一个包装MyDevice和你的3rdPartyLibObj类的对象。我不知道3rdPartyLibObj的功能,但我更喜欢任何事件直接在这个包装器对象上触发,并作为域事件从其中派发给任何其他观察者。 –