Próbuję napisać metodę tak:Znam typof (T), ale kompilator nie. Jak naprawić?
public static T Test<T>()
{
if (typeof(T)==typeof(string))
return "1241";
// do something else
}
ale nie może wydawać się, aby dowiedzieć się, jak wyciągnąć go wyłączyć. Chcę zwrócić wartości w zależności od typu T, w którym metoda została wywołana. Muszę zwrócić ciągi znaków, int, niestandardowe klasy, listy itp.
Rzeczywistym przypadkiem jest niestandardowy kod serializacji, w którym kluczowym jest, aby kod deserializacyjny znał typ obiektu, który powinien utworzyć.
Wyjaśnienie: powyższy przykład daje następujący błąd: nie można przekonwertować ciąg do typu T
Idealnym rozwiązaniem byłoby pracować typów wartości i typów referencyjnych, a nie obejmują obojętne parametr dla rozdzielczości przeciążenia.
Zaczynam wątpić, czy to idealne rozwiązanie istnieje.
Dzięki, Lucas
typeof (T) powinien działać. Który komunikat o błędzie jest wystawiany przez kompilator? –