Har en funktion som ser ut så här: Är ingen stjärna på C# direkt, men har du sett att metoden ToArray har ett argument 'Type t'. Men då måste du väl casta arrayen till typen Objects[] innan du kan returna den? Blir många castingar isf. Vore snyggt om det gick ange typen t som returtyp också, men det måste väl lösas med nån form av generic-lösning. Vet dock ej hur det funkar. Tackar, funkar fint med den lösning du föreslog. Jo det blir många castingar men det kanske man får leva med... Ja, det är faktiskt så det är tänkt. Du menar ngt i stil med: ?Casta från object[]
<code>
public object[] GetObjects(Type t)
{
....
ArrayList objects = new ArrayList();
object toAdd = Activator.CreateInstance(t);
objects.Add(toAdd);
...
return objects.ToArray();
}
</code>
Hur kan man nu få det till array av typen t?
Försöker med nedan men det vill inte fungera, klagar på att det inte går att casta så.
<code>
User[] users = (User[])GetObjects(typeof(User));
</code>Sv: Casta från object[]
/DaPeSv:Casta från object[]
Sv: Casta från object[]
För dem som vill slippa cast kan man skriva en egen, typad, array med hjälp av någon av array base-klasserna. Det finns även några enkla typade arrayer för t.ex. string.
I .Net 2.0 är detta barnsligt enkelt eftersom man genom generics kan få en typad array direkt i deklarationen.
/GöranSv:Casta från object[]
<code>
public static List<T> GetObjects<T>()
{
T o = Activator.CreateInstance<T>();
List<T> tmp = new List<T>();
tmp.Add(o);
return tmp;
}
</code>