如何创建 EntryAssembly 中类型的实例

How to Create instance of a type that is in the EntryAssembly

我有一个 .dll 文件要导入到我的项目中,下面是属于 .dll

的 class

我能够获取解决方案的 DbContext 的名称,但在下一行 当我尝试获取它的类型时,它为空。这是可以理解的,因为该解决方案中不存在所需的类型。但是在这种情况下是否可以创建类型和实例?

非常感谢任何帮助,谢谢!

static class EntityBase
{
public static DbContext MyCreateNewDbContextInstance()
    {
        string myDbContextName = Assembly.GetEntryAssembly().DefinedTypes
            .Where(t => typeof(DbContext).IsAssignableFrom(t)).ToList().First().FullName;

        Type type = Type.GetType(myDbContextName);

        var context = Activator.CreateInstance(type, false);

        return (DbContext)context;
    }
}

与其检索类型,然后从名称中 re-retrieving 它,不如使用初始 LINQ 查询获取 Type 对象:

Type type = Assembly.GetEntryAssembly()
    .DefinedTypes
    .Where(t => typeof(DbContext).IsAssignableFrom(t))
    .FirstOrDefault();
object res = null;
if (type != null) {
    res = Activator.CreateInstance(type, false);
}
return (DbContext)res;