| 

.NET C# Java Javascript Exception

5
Hi,

Ist es möglich so was ähnliches in C# zu machen:

Type t = typeof(SomeObject);
SomeObject p = (t)someObject;
News:
02.12.2011
user1 23 4
Ich habe die zweite Zeile Deines Beispiels mal so korrigiert, wie Du sie vermutlich gemeint hast.
Matthias Hlawatsch 03.12.2011
2 Antworten
2
Falls Du mit Deiner Frage darauf zielst, ob es möglich ist, in C# eine Methode oder einen Ausdruck so zu definieren, dass der (Rückgabe-)Wert für den Compiler verwertbar (und damit ohne den Typ im Cast oder einem Aufruf einer generischen Methode explizit angeben zu müssen) dem entspricht, was eine Variable oder ein Methodenparameter vom Typ Type aktuell zur Laufzeit repräsentiert: Nein, das geht nicht.
03.12.2011
Matthias Hlawatsch 13,2k 4 9
Danke, das wollte ich wissen :).
user1 04.12.2011
2
Und warum honorierst/akzeptierst Du diese Antwort dann nicht?!
Joachim 04.12.2011
3
public T GetInstance<T>()
{
return Activator.CreateInstance(typeof(T), true);
}
02.12.2011
Mario Priebe 6,0k 3 9
2
Ich sehe hier keinen Zusammenhang zur Frage, aber vielleicht hast Du sie anders verstanden als ich. user1 geht es nach meiner Auffassung um einen Cast, nicht um die Erzeugung einer Instanz. Und er will anscheinend vermeiden, den Typ beim Cast explizit hinschreiben zu müssen. Das kann er mit Deiner Methode nur, wenn er ihn stattdessen als Typparameter explizit angibt (type interference funktioniert hier nicht, jedenfalls meckert mein Compiler).

Übrigens: Damit das ganze überhaupt kompiliert, mußt Du einen Cast auf T einbauen...
Matthias Hlawatsch 03.12.2011

Stelle deine Programmieren-Frage jetzt!