gpt4 book ai didi

c# - 将类型转换为 DBSet<>

转载 作者:太空狗 更新时间:2023-10-29 23:14:13 26 4
gpt4 key购买 nike

是否可以在 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
}

最佳答案

I want to create a type definition 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);

关于c# - 将类型转换为 DBSet<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com