0

DbContext (つまり、AdventureworksDB) をコンストラクターのパラメーターとして受け取るリポジトリ RepositoryDe​​partment があります。

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

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

Unity DIpublic interface IRepositoryDepartment : IRepository<Department>を使用して をマッピングしました。RepositoryDepartment

したがって、次のように IRepositoryDe​​partment インターフェイスを解決すると:

Container.Resolve<IRepositoryDepartment>()

完全に機能する RepositoryDe​​partment オブジェクトを取得します。しかし、ここでの質問は次のとおりです。AdventureworksDB コンストラクター パラメーターはどのようにインスタンス化されるのでしょうか?型をどこにも登録していないのでしょうか? 基本クラスはオブジェクトを取得するだけで、インスタンス化ロジックはありません! ここで起こる魔法を誰か説明できる!?

4

1 に答える 1

0

魔法は絶対にありません。コンテキストは具体的なクラスです。特定の有効期間に登録されていない場合、Unity は最大数のパラメーターを持つパブリック コンストラクターを使用してインスタンスを作成するだけです。

于 2013-07-30T22:25:09.693 に答える