相关疑难解决方法(0)

团结汽车工厂与params

我正在试图找出一个正确的方法来注入一个需要参数的自动工厂,或者即使这可以通过Unity实现.

例如,我知道我可以这样做:

public class TestLog
{
     private Func<ILog> logFactory;

     public TestLog(Func<ILog> logFactory)
     {
          this.logFactory = logFactory;
     }
     public ILog CreateLog()
     {
         return logFactory();
     }
}

Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog();
Run Code Online (Sandbox Code Playgroud)

现在我希望能做的是:

public class TestLog
{
     private Func<string, ILog> logFactory;

     public TestLog(Func<string, ILog> logFactory)
     {
          this.logFactory = logFactory;
     }
     public ILog CreateLog(string name)
     {
         return logFactory(name);
     }
}

Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog("Test Name");
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.我可以看到你如何设置自定义工厂来在Unity中创建实例,似乎无法为这个例子提供任何明确的例子.

显然我可以创建自己的工厂,但我正在寻找一种优雅的方式在Unity中以最少的代码执行此操作.

c# unity-container

17
推荐指数
2
解决办法
8938
查看次数

从ViewModel显示一个消息框违反了MVVM - 如何避免?

在Pluralsight上观看有关MVVM的视频时,有一种情况是MVVM模式被违反但没有正确的方法显示:

  • 该视图有一个按钮,使用ICommand触发ViewModel中的处理程序.
  • 处理程序正确地将执行转发到存储库实现.
  • 存储库的具体实现称为Web服务方法.

但是:如果Web服务调用失败,ViewModel将弹出一个消息框,通知用户该错误.由于ViewModel是View的抽象,它不应该直接创建UI,但是为用户提供该消息框的100%干净方法是什么?

c# mvvm

9
推荐指数
2
解决办法
7807
查看次数

Castle Windsor Typed Factory Facility等同物

任何其他.NET IoC容器都能为Castle Windsor的类型化工厂提供相同的功能吗?

例如,如果我在WPF应用程序中使用抽象工厂模式:

public class MyViewModel
{
   private IAnotherViewModelFactory factory;

   public void ShowAnotherViewModel()
   {
      viewController.ShowView(factory.GetAnotherViewModel());
   }
}
Run Code Online (Sandbox Code Playgroud)

我不想为我希望展示的每种类型的ViewModel创建IAnotherViewModelFactory的手动实现,我希望容器能够为我处理这个问题.

castle-windsor ninject unity-container autofac abstract-factory

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