我正在尝试找到一种方法从一个对象映射到另一个对象,其中第一个是域模型,另一个是表示相同内容的对象,但是用于完全不同的用途。一个简单的例子:
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>>();
答案 0 :(得分:0)
如果您不是LibObj
,为什么要在上下文中使用它?
告诉我,如果我误解了你的问题...在你的上下文中(有界的上下文定义得很好?)你用于这个东西的对象是MyDevice,而3rdPartyLibObj
来自不同的上下文(那么不同的上下文如何通信?你是否想过Context Map或类似的东西?)。如果确切,我建议您限制在您的上下文中使用3rdPartyLibObj
(使用反腐败层?)。