Typy generyczne - uniwersalna metoda

Typy generyczne - uniwersalna metoda
K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0

Witam

Chciałbym napisać metodę która na podstawie parametru odczytuje pewną wartość.
Jednak wartość ta może być różnych typów i nie wiem jak to zadeklarować w definicji metody.
Domyślam się że trzeba użyć typów generycznych, jednak używając typów generycznych przy wywołaniu metody muszę podać określony typ,a to jakiego typu jest wartość dowiaduje się dopiero w metodzie
Jak to zrobić?

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
1

Jak to zrobić?

Pomyslec jaki gwalt na logice chcesz zrobic i zaprzestac natychmiast.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Te klasy powinny implementować interfejs. Przykład:

Kopiuj
interface IHaveSomeValue
{
   int GetSomeValue();
}

class HelperClassOrWhatever
{
   public static int Func(IHaveSomeValue obj) 
   {
        return obj.GetSomeValue();
   }
}
class A : IHaveSomeValue
{
   public GetSomeValue()
   {
      return 5;
   }
}

class B : IHaveSomeValue
{
   public GetSomeValue()
   {
      return 10;
   }
}

Efekt myślę będzie taki jak chcesz:

Kopiuj
HelperClassOrWhatever.Func(new A()); //5
HelperClassOrWhatever.Func(new B()); //10

A jeżeli nie to opisz dokładniej co tam kombinujesz :P

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0

Myśle, że moja metoda będzie zwracała object a do niego moge wsadzić string,int itp.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

A jak chcesz rozpoznawać jakiej klasy zwrócić obiekt?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Stwórz sobie klasę w stylu:

Kopiuj
enum MixedValueKind = {mvInt, mvString};

class MixedValue
{
 MixedValueKind kind;

 value {
  Int int;
  String string;
 } 
}

dodanie znacznika <code class="csharp"> - furious programming

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0
Sarrus napisał(a):

A jak chcesz rozpoznawać jakiej klasy zwrócić obiekt?

Wywołam metode GetType na obiekcie?

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Opisz dokładnie co robisz, bo nie chce mi się tworzyć postów na darmo

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

Napisz co dokłądnie chcesz robić z tą wartością, bo może jest na to gotowy interface, np: http://msdn.microsoft.com/pl-pl/library/system.iformattable%28v=vs.110%29.aspx

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0

Pisze metodę która na podstawie parametru do niej przekazywanego odczytuje wartość z pliku xml i ją zwraca.
Wartość ta może być różnych typów, więc myślę, że parametrem zwracanym będzie object?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Jeśli chcesz używać GetType() i zwracać object, to żadnych typów generycznych tutaj nie użyjesz.

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 142
0

Właśnie się waham jak to zrobić ?

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

Nadal nie zrozumiałeś mego poprzedniego pytania. Nie chodziło skąd ma się wziąć ta wartość, ale jaki jest jej dalszy los, do czego jej używasz! Jeśli byś to widział, to na 90% jest na to gotowy interfejs (np taki jak podałem w linku).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.