Casta från object[]
Har en funktion som ser ut så här:
<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>
Svara
Sv: Casta från object[]
Ä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.
/DaPe
Svara
Sv:Casta från object[]
Tackar, funkar fint med den lösning du föreslog. Jo det blir många castingar men det kanske man får leva med...
Svara
Sv: Casta från object[]
Ja, det är faktiskt så det är tänkt.
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öran
Svara
Sv:Casta från object[]
Du menar ngt i stil med: ?
<code>
public static List<T> GetObjects<T>()
{
T o = Activator.CreateInstance<T>();
List<T> tmp = new List<T>();
tmp.Add(o);
return tmp;
}
</code>
Svara