webForumDet fria alternativet

Lista med egna objekt

.NET

3 svar · 459 visningar · startad av invecklaren

Medlem sedan jan. 2008280 inlägg
Frågan#1

Hej!

Jag bygger en mycket generell metod. Jag vill att den ska kunna returnera en lista med objektinstanser.
Objektinstanserna är av typerna Customer, Invoice, Country d v s mina egendefinierade klasser.

Jag vill att man ska kunna skicka in datatypen som parameter och beroende på denna parameter skapas en lista av datatypen i fråga.

Lösningen låter kanske ologisk, men i det sammanhang jag arbetar i så skulle en sådan här metod vara mycket smidig.

   public static List<T> MyMethod(Type returnType, int SomeID)
        {
          List<returnType> lizzy = new List<returnType>();

            //Implementation
          return lizzy;
        }

(Metoden ovan är starkt förenklad.)
Felmeddelandet blir:
The type or namespace name 'returnType' could not be found (are you missing a using directive or an assembly reference?)

Går detta att lösa?

Medlem sedan jan. 20023 327 inlägg
#2

Så här ska du kunna göra:

public static class Repository<T>
{
    public static List<T> MyMethod(int SomeID)
    {
        List<T> lizzy = new List<T>();
        return lizzy;
    }
}

public class Example { }

// Klientkod
List<Example> customers = Repository<Example>.MyMethod(25);
Medlem sedan jan. 2008280 inlägg
#3

Hmm, nu vet jag inte om jag är med...

Tanken är att MyMethod också ska fylla listan med instanser av klassen i fråga. Likt exemplet nedan där reflection utnyttjas.

public static List<T> MyMethod(Type returnType, int SomeID)
        {
          List<returnType> lizzy = new List<returnType>();
          object r=Activator.CreateInstance(returnType)

            lizzy.Add(r)
          return lizzy;
        }
Medlem sedan jan. 20023 327 inlägg
#4
public static List<T> MyMethod(int SomeID)
{                
    List<T> lizzy = new List<T>();
    T instance = Activator.CreateInstance<T>();
    lizzy.Add(instance);

    return lizzy;
}

Om det fortfarande inte är vad du är ute efter får du nog visa lite exempelkod på hur du tänkt använda MyMethod.

252 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
114 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
113 ms — ändringar (db)