Mam kilka klas, które są identyfikowane przez jakiś identyfikator (który jest unikalną liczbą całkowitą dla każdej klasy). Następnie potrzebuję metody, która pobiera liczbę całkowitą (ID) jako argument i zwraca odpowiedni typ klasy. Jak dotąd doszedłem do tego:Metoda C# do zwracania typu
public static Type GetById(int id)
{
switch (id)
{
case 1: return (new ClassA()).GetType();
case 2: return (new ClassB()).GetType();
case 3: return (new ClassC()).GetType();
// ... and so on
}
}
Na razie wydaje się, że to działa, ale z jakiegoś powodu nie podoba mi się, że mam do instancji klasy, aby uzyskać jego typ. Czy to może powodować problemy?
Innym rozwiązaniem znalazłem jest użycie Type.GetType (classNameAsString) metoda, ale myślę, że to może spowodować pewne błędy wykonawcze lub błędów w nazwie klasy sprawa zostanie zmieniona (tj zmienić nazwę klasy, ale zapomniał zaktualizuj metodę GetById).
Czy jest jakiś lepszy sposób na zrobienie tego?
Czy próbujesz stworzyć fabrykę? – Jonesopolis
Niezupełnie, po prostu potrzebuję tego typu, aby dostarczyć go do ogólnej metody w bazowym api. –