将类型转换为DBSet <>

Wone

是否可以在C#中强制转换类型定义?如以下内容:

Type t = typeof(Activity) as typeof(System.Data.Entity.DbSet<MyDomain.Activity>)

或试图强迫演员:

Type t2 = typeof(System.Data.Entity.DbSet<MyDomain.Activity>) typeof(Activity);

我想创建一个类型定义 System.Data.Entity.DbSet<MyDomain.Activity>

之所以这样做,是因为我在自己的域上使用了反射,试图利用上下文中的属性,以防万一有人问。

// get types we are interested in IHit
var instances = from t in Assembly.GetExecutingAssembly().GetTypes()
                where t.GetInterfaces().Contains(typeof(IHit))
                         && t.GetConstructor(Type.EmptyTypes) != null
                select Activator.CreateInstance(t) as IHit;
// loop and cast
foreach (var instance in instances)
{
    Type t = instance.GetType()
    Type t2 = typeof(System.Data.Entity.DbSet<t>) as typeof(t);

    // do something with type 2
}
帕特里克·霍夫曼

我想创建一个类型定义 System.Data.Entity.DbSet<MyDomain.Activity>

因此,您实际上要求t成为的类型System.Data.Entity.DbSet<MyDomain.Activity>为什么需要转换另一种类型?该类型MyDomain.Activity不必与您实际请求的类型做任何事情。

这应该为您工作:

Type t = typeof(System.Data.Entity.DbSet<MyDomain.Activity>)

如果您还没有MyDomain.Activity,请使用Type.MakeGenericType

 Type dbSetType = typeof(System.Data.Entity.DbSet<>);
 Type t = dbSetType.MakeGenericType(yourActivityType);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章