This answer显示了如何使用不带参数的工厂接口来解析实例。如何在具有参数的简单喷油器中实现工厂接口
我使用下面的代码
public interface ISimpleBarFactory
{
Bar CreateBar(int value);
}
public sealed class SimpleBarFactory : ISimpleBarFactory
{
private readonly Container _container;
public SimpleBarFactory (Container container)
{
_container = container;
}
public Bar CreateBar(int value)
{
_container.Register(() => new Bar(vlue));
return _container.GetInstance<Bar>();
}
}
解决具有构造函数的参数情况。
The container can't be changed after the first call to GetInstance, GetAllInstances and Verify.
这是解决使用工厂接口与参数情况下,正确的做法:
然而,使用工厂来实例化服务类,当我得到下面的异常?
更新
以下是我的代码。我正在从Ninject迁移代码。
public interface IFormsUIFactory
{
AccountUI CreateAccountUI(Account account);
}
public class FormsUIFactory
{
private readonly IFormsUIFactory _uiFactory;
public FormsUIFactory(IFormsUIFactory uiFactory)
{
_uiFactory = uiFactory;
}
public void CreateAccountUI(Account account)
{
_uiFactory.CreateAccountUI(account);
}
}
UI类将被注入
public partial class AccountUI : Form
{
private readonly IAccountMaintenanceProcessor _processor;
private readonly Account _account;
public AccountUI(IAccountMaintenanceProcessor accountProcessor, Account account)
{
_processor = accountProcessor;
_account = account;
}
}
实例化代码:
var account = new Account();
// Populate values for the account
var frm = _uiFactory.CreateAccountUI(account);
您使用的是什么IoC? –
关键是你应该在应用程序启动时只注册'Bar' ** **一次**。并使用像动态参数解析来传递'value'。您需要知道您使用的是哪种IoC,因为每个IoC都有不同的方式(语法) –
我正在使用简单喷油器 – kagundajm