我需要帮助理解DDD方法以解决以下问题。我一直在互联网上搜索好几天了,不确定我是否理解术语,但似乎根本没有讨论类似的问题。
我有一个界面,用户可以在其中添加项目列表,让我们称之为消息。应定期从外部源(如文件,Web API或其他)更新消息内容。因此,在创建新消息时,用户可以选择连接器类型(即FileConnector)并输入所需的配置,如文件路径或URL。每种连接器类型都有不同的参数。同样,未来新类型的可能性很大。
目前我的域名模型如下:
public class Message
{
public string Content { get; set; }
public Connector Connector { get; set; }
public void Update()
{
this.Content = this.Connector.ReadData();
}
}
public abstract class Connector
{
public Device Device { get; set; }
public abstract string ReadData();
}
public class FileConnector : Connector
{
public string Path { get; set; }
public override string ReadData()
{
//read the file and return its content
}
}
public class WebConnector : Connector
{
public string URI { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public override string ReadData()
{
//connect to Web API and return the result
}
}
这里将使用某种调度程序作业执行Message.Update()。
问题在于我无法直接从域中实现与文件或Web API的连接。我想将这样的实现提取到像服务这样的东西。但这是否意味着我必须为每种连接类型提供不同的服务?如果是这样,我应该如何在域内使用它们?也就是说,在Message对象上执行Update()方法时,如何根据连接器类型注入正确的服务?我还有其他选择吗?
另外,我很想知道在这种情况下是否有替代继承。
P.S。域持久性将使用Entity Framework完成。