工厂模式返回需要已创建其他对象的对象

时间:2011-11-11 23:21:44

标签: c# repository factory

当我的工厂对象将返回的具体对象依赖于已创建的另一个对象时,如何处理这种情况。

为了让我的存储库工作,我需要一个连接对象的实例。每次调用存储库时,我都不想创建新的连接对象。我该如何处理这种情况?我是否将连接对象传递给RepositoryFactory?

IRepository<User> userRepository = RepositoryFactory.GetRepository("user");

 public class UserRepository : IRepository<User>
 {
    public DbConnection Connection { get; set; }

    public UserRepository(DbConnection connection)
    {
        this.Connection = connection;
    }
 }

2 个答案:

答案 0 :(得分:2)

在这个特定的示例中,最好每次都启动一个新连接,关闭并在完成时使用工作单元方法来处理资源。

答案 1 :(得分:0)

在MEF中,您将在工厂对象上放置一个属性,用于导入连接对象。然后,工厂对象可以将该连接对象作为构造函数参数提供给它创建的实例。

连接对象可以由MEF组合构造,也可以由组合容器提供(作为参数传递到container.ComposeParts中)。