小编rem*_*rel的帖子

当需要不同的参数时,如何注入依赖项?

例如,我有这段代码

public class ProductService{
private IProductDataSource _dataSource = DependencyManager.Get<IProductDataSource>();
public Product Get(int id){
return _dataSource.Select(id);
}
}
Run Code Online (Sandbox Code Playgroud)

我有2个不同的数据源:

  • 仅包含1种语言的信息的XML文件,
  • 一个SQL数据库,包含许多语言的信息.

所以我为IProductDataSource创建了2个实现,用于各种数据源.但是如何将所需语言发送到SQL数据源?

  • 我将参数"language"添加到方法"IProductDataSource.Select",即使我不在XML实现的情况下使用它.
  • 在SQL实现中,我从全局状态获取语言?
  • 我将语言添加到我的SQL实现的构造函数中,但后来我不会使用我的DependencyManager并处理我自己的依赖注入.

也许我的第一个解决方案并不好.

dependency-injection inversion-of-control

1
推荐指数
1
解决办法
96
查看次数

如何使InjectAttribute与IValidatableObject一起使用

我有这个ViewModel

public class CustomerSuscribeViewModel : IValidatableObject
{
    [DataMember(IsRequired = true)]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    public string SurName { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.Password)]
    public string ConfirmPassword { get; set; }

    [DataMember(IsRequired = true)]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Inject]
    public IDataUsers DataUsers { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {

        if(DataUsers.Get(new UserFilter() {Email = Email}).Any())
        {
            yield return new …
Run Code Online (Sandbox Code Playgroud)

ninject asp.net-mvc-3

1
推荐指数
1
解决办法
264
查看次数

命令/句柄是应该保留完整的聚合还是只保留其ID?

我正在尝试使用DDD和CQRS.

我得到了这两个解决方案:

  • 将AggregateId添加到我的命令/事件中.我可以使用我的命令作为我的web服务的参数,我也可以将我的命令的一些实例返回到我的表单中,说"你可以执行此命令,这是他的一个和这个"

  • 将我的完整聚合添加到我的命令/事件中.这很好,因为我确定如果有很多事件发生,我将不会加载我的聚合100次,我只是传递我的引用(例如我不会在我的命令的验证器中加载它我的命令处理程序).但我会添加为每个命令创建一个参数类,只有id.

现在我在命令中有id和事件中的完整模型(我相信我的工作单元用于缓存Load(aggregateId),所以我不会为1命令执行相同的请求100).

有没有正确/更好的方式?

command domain-driven-design cqrs

1
推荐指数
1
解决办法
105
查看次数

为什么不等待提高性能?

我观看了这个视频:https://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2287.所以我试图在控制器中实现async/await的使用.所以这基本上是我做的:

 public class HomeController : Controller
    {
        private static WebClient _webClient = new WebClient();
        public async Task<ActionResult> IndexAsync()
        {
            var data = await _webClient.DownloadStringTaskAsync("http://stackoverflow.com/");
            return View("Index", (object)data);
        }
        public ActionResult Index()
        {
            var data = _webClient.DownloadString("http://stackoverflow.com/");
            return View("Index", (object)data);
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我使用了Apache Benchmark并进行了以下两项测试:

ab -n 100 -c 100 http://localhost:53446/Home/index
Run Code Online (Sandbox Code Playgroud)

ab -n 100 -c 100 http://localhost:53446/Home/indexasync
Run Code Online (Sandbox Code Playgroud)

我得到了完全相同的性能(我有8个CPU核心).这是为什么 ?

asp.net-mvc async-await

1
推荐指数
2
解决办法
1554
查看次数