GetAssemblies方法根位置

时间:2016-09-08 18:37:51

标签: c# asp.net-mvc-5

我有以下代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

    var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");

    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
    {
        var entityTypes = assembly
          .GetTypes()
          .Where(t =>
            t.GetCustomAttributes(typeof(PersistentAttribute), inherit: true)
            .Any());

        foreach (var type in entityTypes)
        {
            entityMethod.MakeGenericMethod(type)
              .Invoke(modelBuilder, new object[] { });
        }
    }

    base.OnModelCreating(modelBuilder);
}

代码有效,我对它没有任何问题,但是,我试图完全理解它。我不明白的是这部分:

AppDomain.CurrentDomain.GetAssemblies();

我不明白它从哪里拉出它的组件。该列表是否来自项目参考?它是否来自bin文件夹,查看所有dll可能并带回一个列表?这是如何运作的?我需要正确理解这一点,因为我试图用这个实现Ninject,如果我这样做,就不会引用某些dll,我仍然需要在这个方法中考虑它们。

编辑:让我重申一下这个问题:如果我在我的项目的bin文件夹中放入一个test.dll并调用GetAssemblies方法,我的test.dll会成为其结果的一部分吗?如果答案是否定的,我如何让test.dll成为其结果的一部分,以便我可以使用它,而无需在主项目中实际引用test.dll。

0 个答案:

没有答案