Dependency injection DI在哪里适合CQS?
每当命令需要依赖项时,您必须求助于属性注入吗 假设我有以下命令Dependency injection DI在哪里适合CQS?,dependency-injection,command,Dependency Injection,Command,每当命令需要依赖项时,您必须求助于属性注入吗 假设我有以下命令 public class AddReviewCommand { private ISession _session; private readonly string _reviewSummary; public AddReviewCommand(string reviewSummary) { _reviewSummary = reviewSummary; } pub
public class AddReviewCommand
{
private ISession _session;
private readonly string _reviewSummary;
public AddReviewCommand(string reviewSummary)
{
_reviewSummary = reviewSummary;
}
public void Execute()
{
var review = new Review
{
AddedBy = Environment.Username,
AddedDateTime = DateTime.Now,
ReviewSummary = _reviewSummary
};
_session.Save(review);
}
}
注入
ISession
的唯一方法是通过属性注入吗?属性注入意味着依赖项是可选的,很少是正确的不变量构造函数注入是一种更合适的模式:
public class AddReviewCommand
{
private ISession _session;
private readonly string _reviewSummary;
public AddReviewCommand(string reviewSummary, ISession session)
{
_reviewSummary = reviewSummary;
_session = session;
}
public void Execute()
{
var review = new Review
{
AddedBy = Environment.Username,
AddedDateTime = DateTime.Now,
ReviewSummary = _reviewSummary
};
_session.Save(review);
}
}
谢谢你的回复。我问的原因是我有一个表单可以执行几个命令中的一个。我无法想象将每个命令注入到我的服务(或任何)构造函数中。为什么不呢?有几个不会是问题。如果你有太多,这不是服务本身违反SRP的信号吗?是的,你完全正确。我没想到。谢谢你的评论。