Typy generyczne - uniwersalna metoda

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ć?

1

Jak to zrobić?

Pomyslec jaki gwalt na logice chcesz zrobic i zaprzestac natychmiast.

0

Te klasy powinny implementować interfejs. Przykład:

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:

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

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

0

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

0

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

0

Stwórz sobie klasę w stylu:

enum MixedValueKind = {mvInt, mvString};

class MixedValue
{
 MixedValueKind kind;

 value {
  Int int;
  String string;
 } 
}

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

0
Sarrus napisał(a):

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

Wywołam metode GetType na obiekcie?

0

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

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

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?

0

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

0

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

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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1