bir örneğini oluşturmadan varlığın türünü belirlemek mümkün mü aşağıdaki varlıklarıDönüş varlık türü
public abstract class Animal
{
public int Id {get;set;}
}
public class Cat : Animal
{
}
public class Dog : Animal
{
}
var düşünelim. Aşağıdaki yöntemi kullanarak düşündünüz
var id = 1;
var type = context.Animals.GetTypeOfAnimal(id)
public static Type GetTypeOfAnimal(this ObjectSet<Animal> source, int id)
{
// What shall I do here, I dont want to fetch the instance at this point...
var animal = source.First(a => a.Id == id);
return animal.GetType();
}
bir çözüm ...
public static Type GetTypeOfAnimal(this ObjectSet<Animal> source, int id)
{
var info = source.Where(a => a.Id == id).Select(a => new {IsDog = a is Dog, IsCat = a is Cat}).First();
if(info.IsDog) return typeof(Dog);
if(info.IdCat) return typeof(Cat);
return null;
}
Yapabileceğinizi sanmıyorum. – Yeonho
Tasarım biraz da kokuyor; Jenerik tipin spesifik alt tipini sorgulamak ve daha sonra polimorfizm ile değiştirilmesi gereken dallanma. – millimoose
Yorumunuzun yapıldığı noktada, kaynak zaten alınmış. Bunu engellemeye çalıştığın şey mi? DÜZENLEME: Hayır şimdi görüyorum. Düşünme zamanı şimdi. – Michael