चलें कहते हैं कि मैं निम्नलिखित संस्थाओंवापसी इकाई प्रकार जब प्रति प्रकार विरासत तालिका का उपयोग कर
public abstract class Animal
{
public int Id {get;set;}
}
public class Cat : Animal
{
}
public class Dog : Animal
{
}
है यह उदाहरण बनाकर बिना इकाई के प्रकार का निर्धारण करने के लिए संभव है।
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();
}
एक समाधान मैं निम्नलिखित विधि का उपयोग कर के बारे में सोचा ...
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;
}
मुझे नहीं लगता कि आप कर सकते हैं। – Yeonho
डिजाइन थोड़ा सा गंध करता है; एक सामान्य प्रकार के विशिष्ट उप प्रकार से पूछताछ करना और फिर उस शाखा को बंद करना संभवतः बहुरूपता के साथ प्रतिस्थापित किया जाना चाहिए। – millimoose
आपकी टिप्पणी के बिंदु पर, स्रोत पहले से ही लाया जा चुका है। क्या आप इसे रोकने की कोशिश कर रहे हैं? संपादित करें: अब मैं नहीं देखता हूं। अब समय सोच रहा है। – Michael