2013-05-03 18 views
5

.NET zna wiele sposobów konwersji typów danych:jednolitej metody konwersji typów danych

  • Convert -class;
  • Funkcje wewnątrz typu, takie jak (Try)Parse i ToString itd .;
  • Implementacja interfejsu IConvertable;
  • The TypeConverter;
  • Niejawny i jednoznaczny operator konwersji;
  • Czy brakuje mi kolejnej?

Więc jeśli konwertuję jeden typ danych na inny, muszę znać oba typy i muszę wiedzieć, której metody konwersji użyć. I staje się to dość nieprzyjemne, jeśli jeden z tych dwóch typów (lub oba typy) jest typem generycznym.

Moje pytanie brzmi: Czy w .NET istnieje jednolita (ogólna) metoda konwersji jednego typu danych na inny, który może wykorzystywać wszystkie inne ograniczone metody?

Odpowiedz

2

Dobry, ogólny sposób konwersji między typami to Convert.ChangeType. Oto przykład, jak można go używać do pisania rodzajowe metodę konwersji:

public static TResult Convert<TResult>(IConvertible source) 
{ 
    return (TResult)System.Convert.ChangeType(source, typeof(TResult)); 
} 

on, podobnie jak inne Convert metod, wewnętrznie wywołuje interfejs IConvertible.

To nie wykorzysta swoich innych opcji konwersji:

  • Najczęstszym myślałem byłoby ToString; w tym celu możesz dodać czek, aby sprawdzić, czy TResult jest , a jeśli tak, (po odpowiednich sprawdzeniach zerowych) po prostu wywołaj ToString na swoim wejściu.
  • użyciu odbicia można sprawdzić na:

są to każdy fai Raczej nie wymagające wyjaśnień, jeśli wiesz trochę o refleksji, ale mógłbym rozwinąć, jeśli okaże się to trudne.

+0

Zaktualizowałem moją odpowiedź, aby uwzględnić inne wymienione metody konwersji. –

0

Sugerujesz te są takie same
Są nie
Wybierz odpowiedni

Konwersja Klasa

Przekształca typ danych baza do innego typu danych bazowych.

Parse jest z ciągiem

ToString jest ciąg

IConvertible Interfejs

definiuje metody, które przekształcają wartość wykonawczego odniesienia lub wartość typu do plików wykonywalnych języka wspólnego typ o wartości równoważnej .

TypeConverter Klasa

zapewnia jednolity sposób konwertowania typów wartości do innych typów, jak również dostępu do standardowych wartości i podrzędne.

Tak, musisz znać typ, na który się konwertujesz.
I powinieneś być świadomy tego, z jakiego rodzaju konwersją.

W przypadku leków generycznych nie ma wbudowanych.
W najlepszym przypadku podaje się metodę.
Ale dlaczego potrzebujesz konwersji leków generycznych?

Wydajesz się sugerować, że więcej niż jedna droga to zła rzecz.
Dla jednego sposobu, podoba mi się odpowiedź od Tima S. +1
Ale to nie znaczy, że kiedykolwiek z tego skorzystam.

Są jeszcze więcej sposobów na uzyskanie danych z bazy danych SQL.
Czy to źle?

+0

Gdzie to sugeruję? –

Powiązane problemy