phép nói rằng tôi có các đối tượng sauReturn loại thực thể khi sử dụng bảng mỗi loại thừa kế
public abstract class Animal
{
public int Id {get;set;}
}
public class Cat : Animal
{
}
public class Dog : Animal
{
}
Có thể xác định loại thực thể mà không cần tạo một thể hiện.
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();
}
Một giải pháp tôi nghĩ về việc sử dụng các phương pháp sau đây ...
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;
}
Tôi không nghĩ bạn có thể. – Yeonho
Thiết kế có mùi một chút; truy vấn loại phụ cụ thể của loại chung và sau đó phân nhánh có thể được thay thế bằng đa hình. – millimoose
Tại thời điểm nhận xét của bạn, nguồn đã được tìm nạp. Đó là những gì bạn đang cố gắng để ngăn chặn? EDIT: Không có bây giờ tôi nhìn thấy. Bây giờ suy nghĩ. – Michael