如何创建 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;
我有一个 .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;