0

我有一个存储库 RepositoryDe​​partment,它将 DbContext(即 AdventureworksDB)作为构造函数参数。

public class RepositoryDepartment : Repository<Department>, IRepositoryDepartment
{
    AdventureWorksDB _ctx;

    public RepositoryDepartment(AdventureWorksDB dataContext)
        : base(dataContext)
    {
        _ctx = dataContext;
    }

我已使用 Unity DI将其映射public interface IRepositoryDepartment : IRepository<Department>到。RepositoryDepartment

因此,当我像这样解析 IRepositoryDe​​partment 接口时:

Container.Resolve<IRepositoryDepartment>()

我得到了一个功能齐全的 RepositoryDe​​partment 对象。但这里的问题是:AdventureworksDB 构造函数参数如何被实例化,因为我没有在任何地方注册类型???基类只获取对象,没有实例化逻辑!谁能解释这里发生的魔法!?

4

1 回答 1

0

绝对没有魔法。上下文是一个具体的类,如果它没有在特定的生命周期内注册,Unity 只会使用具有最大参数数量的公共构造函数创建一个实例。

于 2013-07-30T22:25:09.693 回答