Type.IsGenericType
ve Type.IsGenericTypeDefinition
arasındaki fark nedir? İlginçtir, MSDN IsGenericTypeDefinition için bağlantı bozuk.IsGenericType ve IsGenericTypeDefinition arasındaki fark
Belirli bir DbContext'te tanımlanan tüm DbSet'leri almaya çalışırken biraz oynadıktan sonra, aşağıdakileri yapmaya çalıştım, anlamaya çalıştığım davranış: IsGenericType ile filtreleme özellikleri istenen sonuçları döndürürken, IsGenericTypeDefinition ile (herhangi bir geri dönmez).
this post'tan, yazarın DGSet'lerini IsGenericTypeDefinition kullanarak almadığı izlenimim var.
private static void Main(string[] args)
{
A a = new A();
int propertyCount = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericType).Count();
int propertyCount2 = a.GetType().GetProperties().Where(p => p.PropertyType.IsGenericTypeDefinition).Count();
Console.WriteLine("count1: {0} count2: {1}", propertyCount, propertyCount2);
}
// Output: count1: 1 count2: 0
public class A
{
public string aaa { get; set; }
public List<int> myList { get; set; }
}
Yazarın [burada] (http://stackoverflow.com/questions/6304702/cast-propertyinfo-to-generic-type) IsGenericTypeDefinition kullanarak DbSet örneklerini almasının anlamsız olduğunu kabul etmiyor musunuz?) ('. Nerede (p => p.IsGenericTypeDefinition) arasında' – Veverke
Kesinlikle haklısın @Veverke, yazar GetProperties yaparken Cevabınız (ve benim tarafımdan bazı testler) dayanarak, DbSet özellikleri gibi döndü almazsınız kopyala yapıştırılan OP'nin kodunu bir hatayla yanıtlayın. Bu cevaba bir değişiklik yaptım, çok teşekkür ederim! – dasblinkenlight
Başka bir deyişle, IsGenericType öğesinin true olarak döndürdüğü bir tür "gerçek/tam/kullanılabilir" genel türdür. IsGenericTypeDefinition'ın true olduğu bir tür, henüz kodda kullanılamaz, genel bir "blueprint/container" türüdür. – Veverke