2015-02-27 21 views
5

C# türünde bir tanım tanımlamak mümkün mü?DBSet'e Bir Tür Dökümü <>

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

Veya bir döküm zorlamak için çalışıyor: Böyle aşağıdaki gibi üzerinde yansıma kullanıyorum çünkü

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

Bir tür tanımını System.Data.Entity.DbSet<MyDomain.Activity>

oluşturmak istiyorum ben yapıyorum Benim alanım, herhangi birinin sorabileceği durumlarda, bağlamdaki özellikleri çekmeye çalışıyorum.

// 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 
} 
+2

[XY Sorun] (http: // meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? Neyi başarmaya çalışıyorsun? –

+0

Ne yapmak istersin? Türü bir tür olarak yayınlamak mı? Sonunda ne olmaz? –

+0

Üzgünüm, sağladığınız açıklamalarla bile, hala sorunuza bir anlam veremiyorum. System.Data.Entity.DbSet 'türüne karşılık gelen' Type' türünü almak istiyorsanız, 'typeof (System.Data.Entity.DbSet ) 'yazın, ayrı ayrı gerek yok Orada typeof (Activity) var. – hvd

cevap

5

Ben aslında System.Data.Entity.DbSet<MyDomain.Activity> tipi olmak t soruyorsunuz bir tür tanımını Yani System.Data.Entity.DbSet<MyDomain.Activity>

oluşturmak istiyorum. Neden başka türden bir tür dökümü yapmalısınız? MyDomain.Activity tipi, aslında istediğiniz türde bir şey yapmak zorunda değildir.

Bu sizin için çalışması gerekir:

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

Henüz MyDomain.Activity türünü yoksa, sen Type.MakeGenericType kullanmalısınız:

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