当我的工厂对象将返回的具体对象依赖于已创建的另一个对象时,如何处理这种情况。
为了让我的存储库工作,我需要一个连接对象的实例。每次调用存储库时,我都不想创建新的连接对象。我该如何处理这种情况?我是否将连接对象传递给RepositoryFactory?
IRepository<User> userRepository = RepositoryFactory.GetRepository("user");
public class UserRepository : IRepository<User>
{
public DbConnection Connection { get; set; }
public UserRepository(DbConnection connection)
{
this.Connection = connection;
}
}
答案 0 :(得分:2)
在这个特定的示例中,最好每次都启动一个新连接,关闭并在完成时使用工作单元方法来处理资源。
答案 1 :(得分:0)
在MEF中,您将在工厂对象上放置一个属性,用于导入连接对象。然后,工厂对象可以将该连接对象作为构造函数参数提供给它创建的实例。
连接对象可以由MEF组合构造,也可以由组合容器提供(作为参数传递到container.ComposeParts中)。