C# 将类型转换为DBSet<&燃气轮机;

C# 将类型转换为DBSet<&燃气轮机;,c#,.net,generics,reflection,C#,.net,Generics,Reflection,是否可以在C#中强制转换类型定义?例如: Type t = typeof(Activity) as typeof(System.Data.Entity.DbSet<MyDomain.Activity>) Type t=typeof(活动)作为typeof(System.Data.Entity.DbSet) 或者试图强迫演员: Type t2 = typeof(System.Data.Entity.DbSet<MyDomain.Activity>) typeof(Act

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

Type t = typeof(Activity) as typeof(System.Data.Entity.DbSet<MyDomain.Activity>)
Type t=typeof(活动)作为typeof(System.Data.Entity.DbSet)
或者试图强迫演员:

Type t2 = typeof(System.Data.Entity.DbSet<MyDomain.Activity>) typeof(Activity);
Type t2=typeof(System.Data.Entity.DbSet)typeof(Activity);
我想创建一个类型定义
System.Data.Entity.DbSet

我这样做是因为我在我的域上使用反射,试图利用上下文中的属性,以防有人问

// 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
}
//获取我们感兴趣的类型
var instances=来自Assembly.getExecutionGassembly().GetTypes()中的t
其中t.GetInterfaces()包含(typeof(IHit))
&&t.GetConstructor(Type.EmptyTypes)!=无效的
选择Activator.CreateInstance(t)作为IHit;
//循环和浇铸
foreach(实例中的var实例)
{
类型t=instance.GetType()
t2型=typeof(System.Data.Entity.DbSet)作为typeof(t);
//用2型做点什么
}
我想创建一个类型定义
System.Data.Entity.DbSet

因此,您实际上要求
t
成为
System.Data.Entity.DbSet
的类型。为什么你需要铸造一种类型的另一种?类型
MyDomain.Activity
与您实际请求的类型没有任何关系

这应该适合您:

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

? 你想实现什么?你想做什么?将一个类型转换为一个类型?
t
最后会是什么?对不起,即使你给出了解释,我仍然无法理解你的问题。如果您想获得与
System.Data.Entity.DbSet
相对应的
Type
,只需编写
typeof(System.Data.Entity.DbSet)
,无需单独涉及
typeof(活动)
在那里。我无法清楚地写出类型名,因为我首先使用反射来获取类型值。很抱歉,我意识到我的问题很模糊,所以添加了更多内容。
 Type dbSetType = typeof(System.Data.Entity.DbSet<>);
 Type t = dbSetType.MakeGenericType(yourActivityType);