Anonyme Klassen

24/04/2010 - 20:16 von Carsten Posingies | Report spam
Ciao tutti,

dynamic instance = new class
{
public int Return4 { return 4; }
}
var foo = instance.Return4();

oder auch

dynamic instance = new class<T>
{
public T ReturnDefault { return default(T); }
}
var foo = instance.ReturnDefault();

Geht sowas irgendwie?

Carsten
 

Lesen sie die antworten

#1 Immo Landwerth
25/04/2010 - 09:49 | Warnen spam
Carsten Posingies wrote:

dynamic instance = new class
{
public int Return4 { return 4; }
}



Das würde in etwa so gehen:

dynamic instance = new
{
Return4 = 4
};

Aber warum dynamic?

var foo = instance.Return4();



Wenn Du willst, dass foo statisch ebenfalls vom Typ "dynamic" ist, ist
die Verwendung von "var" OK. Falls Du einen int möchtest, musst Du ihn
explizit hinschreiben, weil instance statisch auf dynamic typisiert
wurde. Außerdem können anonyme Typen in C# nur Eigenschaften enthalten.

Dieser Code funktioniert allerdings:

var foo = instance.Return4;

oder eben

int foo = instance.Return4;

oder auch

dynamic instance = new class<T>
{
public T ReturnDefault { return default(T); }
}
var foo = instance.ReturnDefault();

Geht sowas irgendwie?



Falls der Code in einer generischen Methode oder einer Methode eines
generischen Typs enthalten sind, geht das analog wie oben:

void T Test<T>()
{
dynamic instance = new
{
ReturnDefault = default(T)
};

T foo = instance.ReturnDefault;

return foo;
}


Mir ist nicht klar was Du eigentlich erreichen willst. Vielleicht
erklàrst Du erst einmal Dein Ziel. Dieses auschließlich aus Pseudocode
zu entnehmen ist ein wenig schwierig ;-)

Immo Landwerth

Ähnliche fragen