Mam problem z programem C#, który obejmuje następujące elementy:Jak mogę obniżyć instancję generowaną przez metodę statyczną?
class Program
{
static void Main(string[] args)
{
Child childInstance = Child.ParseFromA(@"path/to/Afile") as Child;
}
}
class Parent{
int property;
public static Parent ParseFromA(string filename)
{
Parent parent = new Parent();
// parse file and set property here...
return parent;
}
}
class Child : Parent
{
public void SomeAdditionalFunction() { }
}
Po uruchomieniu tego kodu, childInstance
staje null
.
Próbowałem poniżej cesją z wyraźną obsady, ale zakończył się wyjątek:
Child childInstance = (Child)Child.ParseFromA(@"path/to/Afile");
Ponieważ chcę analizować niektóre typy plików do Parent
i Child
przykład, chcę zachować projekt, który generuje instancji przez metody statyczne.
Jak uzyskać prawidłową childInstance
?
Dzięki! Twoje rozwiązanie jest dokładnie tym, co chciałem zrobić! Zastosowałem to i doskonale działało. – Malboma99
To tylko mała rzecz na temat twojego przykładu: całkowicie normalne jest spychanie "Zwierzęcia" do "Kota": otrzymujesz "Kot", jeśli był to "Kot" i "null", jeśli nie był (to jest co autor robi). Problem polega na tym, że jeśli utworzysz "Zwierzę", stworzysz abstrakcyjne zwierzę, które nie może być kotem. Jest to model, który po prostu nie ma swojego rodzaju. Jeśli mówisz o mężczyźnie, nie masz na myśli "John", masz na myśli jakiegoś abstrakcyjnego człowieka. Jestem prawie pewien, że to była intencja, ale myślałem, że jest to trochę niejasne z twojego przykładu. – Archeg
@Archeg: Masz oczywiście całkowitą rację. Zmodyfikowalem moj przyklad i zdecydowalem sie na niektóre klasy szkieletowe. – Heinzi