XtremeCJ
Erfahrenes Mitglied
Hi
Ich habe ein object, das ein Array darstellen soll. Welchen Typen dieses Array hat, kann ich aber erst zur Laufzeit bestimmen.
Die Typen, die das Array haben kann, sind begrenzt, und alle Typen haben eine Property die in jedem Typen vorhanden ist. Diese Property benötige ich. Allerdings sind die Typen aus einem Framework, und sie erben von keiner Basisklasse und implementieren kein Interface [ich spreche von den Vertex-Typen aus dem XNA-Framework, aber das nur am Rande].
Kann ich auf solch eine Property mit dem dynamic-Keyword aus .NET 4 zugreifen?
Ich dachte, dass mit .NET 4 das dynamic-Keyword helfen würde, da hier der Typ erst zur Laufzeit bestimmt wird, aber ich trotzdem im Code schon auf Properties verweisen kann. Ein Kollege meinte aber, dass dynamic wohl nicht dafür da wäre. Entweder, er versteht mich falsch, oder ich habe den Artikel von Chris Burrow falsch verstanden.
Alternativ könnte ich fragen, ob das jeweilige Objekt ein bestimmter Typ ist und dann boxen oder casten, aber das ist so viel Code [mindestens 10 Zeilen :O] den ich verhindern möchte.
Zum besseren Verständnis gibt es hier noch etwas Code. Zu beachten ist wie gesagt, dass ich in meinem Fall nicht die structs selbst definiere, sondern diese aus einem Framework kommen.
//EDIT
Ich kenne schon einige andere Möglichkeiten, mein Ziel zu erreichen. Ich würde nur gerne wissen, ob es mit dynamic aus .NET 4 geht, oder wofür dynamic dann gedacht ist. Reflection, casten/boxen und Extensions hab ich schon zur Auswahl. Aber mir geht es um dynamic ^_^
Ich habe ein object, das ein Array darstellen soll. Welchen Typen dieses Array hat, kann ich aber erst zur Laufzeit bestimmen.
Die Typen, die das Array haben kann, sind begrenzt, und alle Typen haben eine Property die in jedem Typen vorhanden ist. Diese Property benötige ich. Allerdings sind die Typen aus einem Framework, und sie erben von keiner Basisklasse und implementieren kein Interface [ich spreche von den Vertex-Typen aus dem XNA-Framework, aber das nur am Rande].
Kann ich auf solch eine Property mit dem dynamic-Keyword aus .NET 4 zugreifen?
Ich dachte, dass mit .NET 4 das dynamic-Keyword helfen würde, da hier der Typ erst zur Laufzeit bestimmt wird, aber ich trotzdem im Code schon auf Properties verweisen kann. Ein Kollege meinte aber, dass dynamic wohl nicht dafür da wäre. Entweder, er versteht mich falsch, oder ich habe den Artikel von Chris Burrow falsch verstanden.
Alternativ könnte ich fragen, ob das jeweilige Objekt ein bestimmter Typ ist und dann boxen oder casten, aber das ist so viel Code [mindestens 10 Zeilen :O] den ich verhindern möchte.
Zum besseren Verständnis gibt es hier noch etwas Code. Zu beachten ist wie gesagt, dass ich in meinem Fall nicht die structs selbst definiere, sondern diese aus einem Framework kommen.
Code:
struct Typ1
{
public int IntWert; // wird in beiden Typen verwendet
public string Uhrzeit;
}
struct Typ2
{
public int IntWert; // wird in beiden Typen verwendet
public string Datum;
}
class Test
{
bool b;
object Array;
public Test()
{
b = false;
switch (b)
{
case true:
this.Array = new Typ1[]{new Typ1(){ IntWert = 1, Uhrzeit = "jetzt" }};
// Array füllen
break;
case false:
this.Array = new Typ2[]{new Typ2(){ IntWert = 2, Datum = "heute" }};
// Array füllen
break;
}
Console.WriteLine(this.Array[0].IntWert.ToString());
// ^^ den will ich
}
}
//EDIT
Ich kenne schon einige andere Möglichkeiten, mein Ziel zu erreichen. Ich würde nur gerne wissen, ob es mit dynamic aus .NET 4 geht, oder wofür dynamic dann gedacht ist. Reflection, casten/boxen und Extensions hab ich schon zur Auswahl. Aber mir geht es um dynamic ^_^
Zuletzt bearbeitet: